You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2021/01/05 12:45:05 UTC

[lucene-solr] 01/02: LUCENE-9570: code reformatting [final].

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

dweiss pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 2cbf261032dc8aca56c846971c090c991ac594a6
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Tue Jan 5 13:44:05 2021 +0100

    LUCENE-9570: code reformatting [final].
---
 gradle/generation/javacc.gradle                    |   17 +-
 gradle/validation/spotless.gradle                  |  107 +-
 lucene/CHANGES.txt                                 |    4 +
 .../java/org/apache/lucene/search/HitQueue.java    |    7 +-
 .../org/apache/lucene/store/NIOFSDirectory.java    |    8 +-
 .../search/grouping/AllGroupHeadsCollector.java    |   84 +-
 .../lucene/search/grouping/AllGroupsCollector.java |   23 +-
 .../search/grouping/BlockGroupingCollector.java    |  193 +-
 .../search/grouping/CollectedSearchGroup.java      |   10 +-
 .../search/grouping/DistinctValuesCollector.java   |   27 +-
 .../apache/lucene/search/grouping/DoubleRange.java |   10 +-
 .../lucene/search/grouping/DoubleRangeFactory.java |   20 +-
 .../search/grouping/DoubleRangeGroupSelector.java  |   16 +-
 .../grouping/FirstPassGroupingCollector.java       |  100 +-
 .../apache/lucene/search/grouping/GroupDocs.java   |   40 +-
 .../search/grouping/GroupFacetCollector.java       |   93 +-
 .../lucene/search/grouping/GroupReducer.java       |   35 +-
 .../lucene/search/grouping/GroupSelector.java      |   39 +-
 .../lucene/search/grouping/GroupingSearch.java     |  135 +-
 .../apache/lucene/search/grouping/LongRange.java   |    9 +-
 .../lucene/search/grouping/LongRangeFactory.java   |   20 +-
 .../search/grouping/LongRangeGroupSelector.java    |   16 +-
 .../apache/lucene/search/grouping/SearchGroup.java |  103 +-
 .../grouping/SecondPassGroupingCollector.java      |   28 +-
 .../search/grouping/TermGroupFacetCollector.java   |  113 +-
 .../lucene/search/grouping/TermGroupSelector.java  |   25 +-
 .../apache/lucene/search/grouping/TopGroups.java   |  176 +-
 .../lucene/search/grouping/TopGroupsCollector.java |  106 +-
 .../search/grouping/ValueSourceGroupSelector.java  |   13 +-
 .../lucene/search/grouping/package-info.java       |  187 +-
 .../search/grouping/AbstractGroupingTestCase.java  |   17 +-
 .../search/grouping/BaseGroupSelectorTestCase.java |  128 +-
 .../grouping/TestAllGroupHeadsCollector.java       |  188 +-
 .../search/grouping/TestAllGroupsCollector.java    |   14 +-
 .../lucene/search/grouping/TestBlockGrouping.java  |   60 +-
 .../grouping/TestDistinctValuesCollector.java      |  176 +-
 .../search/grouping/TestDoubleRangeFactory.java    |    2 -
 .../grouping/TestDoubleRangeGroupSelector.java     |    6 +-
 .../search/grouping/TestGroupFacetCollector.java   |  259 +-
 .../lucene/search/grouping/TestGrouping.java       |  798 ++++--
 .../lucene/search/grouping/TestGroupingSearch.java |   38 +-
 .../search/grouping/TestLongRangeFactory.java      |    2 -
 .../grouping/TestLongRangeGroupSelector.java       |    4 +-
 .../search/grouping/TestTermGroupSelector.java     |    2 +-
 .../lucene/search/grouping/TestTopGroups.java      |  153 +-
 .../grouping/TestValueSourceGroupSelector.java     |    1 -
 .../apache/lucene/luke/app/AbstractHandler.java    |    2 -
 .../apache/lucene/luke/app/DirectoryHandler.java   |    5 +-
 .../apache/lucene/luke/app/DirectoryObserver.java  |    1 -
 .../org/apache/lucene/luke/app/IndexHandler.java   |   18 +-
 .../org/apache/lucene/luke/app/IndexObserver.java  |    1 -
 .../java/org/apache/lucene/luke/app/LukeState.java |    5 +-
 .../java/org/apache/lucene/luke/app/Observer.java  |    3 +-
 .../apache/lucene/luke/app/desktop/LukeMain.java   |   38 +-
 .../lucene/luke/app/desktop/MessageBroker.java     |    1 -
 .../lucene/luke/app/desktop/Preferences.java       |    8 +-
 .../luke/app/desktop/PreferencesFactory.java       |    3 +-
 .../lucene/luke/app/desktop/PreferencesImpl.java   |   14 +-
 .../desktop/components/AnalysisPanelProvider.java  |  185 +-
 .../desktop/components/AnalysisTabOperator.java    |    2 -
 .../desktop/components/CommitsPanelProvider.java   |  204 +-
 .../components/ComponentOperatorRegistry.java      |    4 +-
 .../desktop/components/DocumentsPanelProvider.java |  345 ++-
 .../desktop/components/DocumentsTabOperator.java   |    2 +-
 .../app/desktop/components/LogsPanelProvider.java  |    6 +-
 .../app/desktop/components/LukeWindowProvider.java |   33 +-
 .../app/desktop/components/MenuBarProvider.java    |   45 +-
 .../desktop/components/OverviewPanelProvider.java  |  172 +-
 .../desktop/components/SearchPanelProvider.java    |  344 ++-
 .../app/desktop/components/TabSwitcherProxy.java   |    1 -
 .../app/desktop/components/TabbedPaneProvider.java |   10 +-
 .../app/desktop/components/TableColumnInfo.java    |    1 -
 .../app/desktop/components/TableModelBase.java     |    9 +-
 .../components/dialog/ConfirmDialogFactory.java    |   23 +-
 .../components/dialog/HelpDialogFactory.java       |   15 +-
 .../analysis/AnalysisChainDialogFactory.java       |   50 +-
 .../dialog/analysis/EditFiltersDialogFactory.java  |  140 +-
 .../dialog/analysis/EditFiltersMode.java           |    3 +-
 .../dialog/analysis/EditParamsDialogFactory.java   |  106 +-
 .../components/dialog/analysis/EditParamsMode.java |    4 +-
 .../analysis/TokenAttributeDialogFactory.java      |   40 +-
 .../components/dialog/analysis/package-info.java   |    2 +-
 .../dialog/documents/AddDocumentDialogFactory.java |  254 +-
 .../documents/AddDocumentDialogOperator.java       |    1 -
 .../dialog/documents/DocValuesDialogFactory.java   |   64 +-
 .../documents/IndexOptionsDialogFactory.java       |   27 +-
 .../dialog/documents/StoredValueDialogFactory.java |   34 +-
 .../dialog/documents/TermVectorDialogFactory.java  |   65 +-
 .../components/dialog/documents/package-info.java  |    2 +-
 .../dialog/menubar/AboutDialogFactory.java         |  104 +-
 .../dialog/menubar/CheckIndexDialogFactory.java    |  187 +-
 .../dialog/menubar/CreateIndexDialogFactory.java   |  160 +-
 .../dialog/menubar/ExportTermsDialogFactory.java   |  135 +-
 .../dialog/menubar/OpenIndexDialogFactory.java     |   76 +-
 .../dialog/menubar/OptimizeIndexDialogFactory.java |  101 +-
 .../components/dialog/menubar/package-info.java    |    2 +-
 .../desktop/components/dialog/package-info.java    |    2 +-
 .../dialog/search/ExplainDialogFactory.java        |   38 +-
 .../components/dialog/search/package-info.java     |    2 +-
 .../analysis/CustomAnalyzerPanelOperator.java      |    1 -
 .../analysis/CustomAnalyzerPanelProvider.java      |  267 +-
 .../analysis/PresetAnalyzerPanelOperator.java      |    1 -
 .../analysis/PresetAnalyzerPanelProvider.java      |   20 +-
 .../analysis/SimpleAnalyzeResultPanelOperator.java |    4 +-
 .../analysis/SimpleAnalyzeResultPanelProvider.java |   55 +-
 .../StepByStepAnalyzeResultPanelOperator.java      |    3 +-
 .../StepByStepAnalyzeResultPanelProvider.java      |   99 +-
 .../fragments/analysis/package-info.java           |    2 +-
 .../desktop/components/fragments/package-info.java |    2 +-
 .../fragments/search/AnalyzerPaneProvider.java     |   43 +-
 .../fragments/search/AnalyzerTabOperator.java      |    1 -
 .../fragments/search/FieldValuesPaneProvider.java  |   37 +-
 .../fragments/search/FieldValuesTabOperator.java   |    1 -
 .../fragments/search/MLTPaneProvider.java          |   59 +-
 .../fragments/search/MLTTabOperator.java           |    1 -
 .../fragments/search/QueryParserPaneProvider.java  |  109 +-
 .../fragments/search/QueryParserTabOperator.java   |    2 -
 .../fragments/search/SimilarityPaneProvider.java   |   18 +-
 .../fragments/search/SortPaneProvider.java         |   75 +-
 .../fragments/search/SortTabOperator.java          |    2 -
 .../components/fragments/search/package-info.java  |    2 +-
 .../luke/app/desktop/components/package-info.java  |    2 +-
 .../luke/app/desktop/dto/documents/NewField.java   |    5 +-
 .../app/desktop/dto/documents/package-info.java    |    2 +-
 .../lucene/luke/app/desktop/package-info.java      |    2 +-
 .../lucene/luke/app/desktop/util/DialogOpener.java |   17 +-
 .../luke/app/desktop/util/ExceptionHandler.java    |    2 -
 .../lucene/luke/app/desktop/util/FontUtils.java    |   13 +-
 .../luke/app/desktop/util/HelpHeaderRenderer.java  |   67 +-
 .../lucene/luke/app/desktop/util/ImageUtils.java   |    9 +-
 .../lucene/luke/app/desktop/util/ListUtils.java    |    8 +-
 .../lucene/luke/app/desktop/util/MessageUtils.java |   41 +-
 .../lucene/luke/app/desktop/util/NumericUtils.java |   31 +-
 .../lucene/luke/app/desktop/util/StringUtils.java  |    3 +-
 .../luke/app/desktop/util/StyleConstants.java      |    4 +-
 .../lucene/luke/app/desktop/util/TabUtils.java     |   12 +-
 .../lucene/luke/app/desktop/util/TableUtils.java   |   27 +-
 .../luke/app/desktop/util/TextAreaAppender.java    |   28 +-
 .../luke/app/desktop/util/TextAreaPrintStream.java |    2 +-
 .../lucene/luke/app/desktop/util/URLLabel.java     |   16 +-
 .../luke/app/desktop/util/inifile/IniFile.java     |    1 -
 .../app/desktop/util/inifile/IniFileReader.java    |    1 -
 .../app/desktop/util/inifile/IniFileWriter.java    |    1 -
 .../luke/app/desktop/util/inifile/OptionMap.java   |    1 -
 .../app/desktop/util/inifile/SimpleIniFile.java    |    4 +-
 .../desktop/util/inifile/SimpleIniFileReader.java  |   39 +-
 .../app/desktop/util/inifile/package-info.java     |    2 +-
 .../luke/app/desktop/util/lang/package-info.java   |    2 +-
 .../lucene/luke/app/desktop/util/package-info.java |    2 +-
 .../org/apache/lucene/luke/app/package-info.java   |    2 +-
 .../apache/lucene/luke/models/LukeException.java   |    1 -
 .../org/apache/lucene/luke/models/LukeModel.java   |    7 +-
 .../lucene/luke/models/analysis/Analysis.java      |   70 +-
 .../luke/models/analysis/AnalysisFactory.java      |    1 -
 .../lucene/luke/models/analysis/AnalysisImpl.java  |   84 +-
 .../luke/models/analysis/CustomAnalyzerConfig.java |   20 +-
 .../lucene/luke/models/analysis/package-info.java  |    2 +-
 .../apache/lucene/luke/models/commits/Commit.java  |    8 +-
 .../apache/lucene/luke/models/commits/Commits.java |   12 +-
 .../lucene/luke/models/commits/CommitsFactory.java |    1 -
 .../lucene/luke/models/commits/CommitsImpl.java    |   39 +-
 .../apache/lucene/luke/models/commits/File.java    |    7 +-
 .../apache/lucene/luke/models/commits/Segment.java |    8 +-
 .../lucene/luke/models/commits/package-info.java   |    2 +-
 .../lucene/luke/models/documents/DocValues.java    |   35 +-
 .../luke/models/documents/DocValuesAdapter.java    |   58 +-
 .../luke/models/documents/DocumentField.java       |   38 +-
 .../lucene/luke/models/documents/Documents.java    |   58 +-
 .../luke/models/documents/DocumentsFactory.java    |    1 -
 .../luke/models/documents/DocumentsImpl.java       |   48 +-
 .../lucene/luke/models/documents/TermPosting.java  |   24 +-
 .../luke/models/documents/TermVectorEntry.java     |   70 +-
 .../luke/models/documents/TermVectorsAdapter.java  |   10 +-
 .../lucene/luke/models/documents/package-info.java |    2 +-
 .../lucene/luke/models/overview/Overview.java      |   57 +-
 .../luke/models/overview/OverviewFactory.java      |    1 -
 .../lucene/luke/models/overview/OverviewImpl.java  |   18 +-
 .../lucene/luke/models/overview/TermCounts.java    |   17 +-
 .../luke/models/overview/TermCountsOrder.java      |   20 +-
 .../lucene/luke/models/overview/TermStats.java     |   34 +-
 .../lucene/luke/models/overview/TopTerms.java      |   13 +-
 .../lucene/luke/models/overview/package-info.java  |    2 +-
 .../apache/lucene/luke/models/package-info.java    |    2 +-
 .../lucene/luke/models/search/MLTConfig.java       |    6 +-
 .../luke/models/search/QueryParserConfig.java      |   63 +-
 .../apache/lucene/luke/models/search/Search.java   |   47 +-
 .../lucene/luke/models/search/SearchFactory.java   |    1 -
 .../lucene/luke/models/search/SearchImpl.java      |  114 +-
 .../lucene/luke/models/search/SearchResults.java   |   58 +-
 .../luke/models/search/SimilarityConfig.java       |   26 +-
 .../lucene/luke/models/search/package-info.java    |    2 +-
 .../lucene/luke/models/tools/IndexTools.java       |   15 +-
 .../luke/models/tools/IndexToolsFactory.java       |    1 -
 .../lucene/luke/models/tools/IndexToolsImpl.java   |   23 +-
 .../lucene/luke/models/tools/package-info.java     |    2 +-
 .../apache/lucene/luke/models/util/IndexUtils.java |   93 +-
 .../lucene/luke/models/util/package-info.java      |    2 +-
 .../luke/models/util/twentynewsgroups/Message.java |    8 +-
 .../util/twentynewsgroups/MessageFilesParser.java  |   12 +-
 .../models/util/twentynewsgroups/package-info.java |    2 +-
 .../java/org/apache/lucene/luke/package-info.java  |    2 +-
 .../org/apache/lucene/luke/util/BytesRefUtils.java |    7 +-
 .../org/apache/lucene/luke/util/LoggerFactory.java |   37 +-
 .../org/apache/lucene/luke/util/package-info.java  |    2 +-
 .../lucene/luke/util/reflection/ClassScanner.java  |   10 +-
 .../luke/util/reflection/SubtypeCollector.java     |    8 +-
 .../lucene/luke/util/reflection/package-info.java  |    2 +-
 .../desktop/util/inifile/SimpleIniFileTest.java    |    1 -
 .../luke/models/analysis/AnalysisImplTest.java     |   60 +-
 .../luke/models/commits/CommitsImplTest.java       |   10 +-
 .../models/documents/DocValuesAdapterTest.java     |   16 +-
 .../luke/models/documents/DocumentsImplTest.java   |    7 +-
 .../luke/models/documents/DocumentsTestBase.java   |   34 +-
 .../models/documents/TermVectorsAdapterTest.java   |    4 +-
 .../luke/models/overview/OverviewImplTest.java     |    8 +-
 .../luke/models/overview/OverviewTestBase.java     |    4 +-
 .../luke/models/overview/TermCountsTest.java       |    4 +-
 .../lucene/luke/models/overview/TopTermsTest.java  |    2 -
 .../lucene/luke/models/search/SearchImplTest.java  |  111 +-
 .../apache/lucene/misc/CollectorMemoryTracker.java |    5 +-
 .../java/org/apache/lucene/misc/GetTermInfo.java   |   38 +-
 .../java/org/apache/lucene/misc/HighFreqTerms.java |   88 +-
 .../org/apache/lucene/misc/IndexMergeTool.java     |   42 +-
 .../apache/lucene/misc/SweetSpotSimilarity.java    |  165 +-
 .../src/java/org/apache/lucene/misc/TermStats.java |   18 +-
 .../apache/lucene/misc/document/LazyDocument.java  |   63 +-
 .../apache/lucene/misc/document/package-info.java  |    2 +-
 .../apache/lucene/misc/index/IndexSplitter.java    |   65 +-
 .../lucene/misc/index/MultiPassIndexSplitter.java  |   71 +-
 .../apache/lucene/misc/index/PKIndexSplitter.java  |   82 +-
 .../org/apache/lucene/misc/index/package-info.java |    2 +-
 .../java/org/apache/lucene/misc/package-info.java  |    4 +-
 .../misc/search/DiversifiedTopDocsCollector.java   |   81 +-
 .../apache/lucene/misc/search/DocValuesStats.java  |   43 +-
 .../misc/search/DocValuesStatsCollector.java       |   15 +-
 .../search/MemoryAccountingBitsetCollector.java    |    1 -
 .../apache/lucene/misc/search/package-info.java    |    2 +-
 .../search/similarity/LegacyBM25Similarity.java    |   31 +-
 .../misc/search/similarity/package-info.java       |    2 +-
 .../misc/store/HardlinkCopyDirectoryWrapper.java   |   78 +-
 .../apache/lucene/misc/store/NativePosixUtil.java  |   33 +-
 .../lucene/misc/store/NativeUnixDirectory.java     |  180 +-
 .../org/apache/lucene/misc/store/RAFDirectory.java |   95 +-
 .../apache/lucene/misc/store/WindowsDirectory.java |   66 +-
 .../org/apache/lucene/misc/store/package-info.java |    2 +-
 .../org/apache/lucene/misc/util/MemoryTracker.java |    5 +-
 .../apache/lucene/misc/util/fst/ListOfOutputs.java |   66 +-
 .../misc/util/fst/UpToTwoPositiveIntOutputs.java   |   48 +-
 .../apache/lucene/misc/util/fst/package-info.java  |    2 +-
 .../org/apache/lucene/misc/util/package-info.java  |    5 +-
 .../lucene/misc/SweetSpotSimilarityTest.java       |  199 +-
 .../org/apache/lucene/misc/TestHighFreqTerms.java  |  183 +-
 .../org/apache/lucene/misc/TestIndexMergeTool.java |   40 +-
 .../lucene/misc/document/TestLazyDocument.java     |   80 +-
 .../lucene/misc/index/TestIndexSplitter.java       |   31 +-
 .../misc/index/TestMultiPassIndexSplitter.java     |   44 +-
 .../lucene/misc/index/TestPKIndexSplitter.java     |   67 +-
 .../search/TestDiversifiedTopDocsCollector.java    |  298 +--
 .../misc/search/TestDocValuesStatsCollector.java   |   47 +-
 .../TestMemoryAccountingBitsetCollector.java       |   14 +-
 .../similarity/TestLegacyBM25Similarity.java       |   64 +-
 .../lucene/misc/store/NativeLibEnableRule.java     |    9 +-
 .../lucene/misc/store/NativeUnixDirectoryTest.java |   20 +-
 .../store/TestHardLinkCopyDirectoryWrapper.java    |   30 +-
 .../apache/lucene/misc/store/TestRAFDirectory.java |   12 +-
 .../lucene/misc/store/WindowsDirectoryTest.java    |   11 +-
 .../misc/util/TestCollectorMemoryTracker.java      |   22 +-
 .../apache/lucene/misc/util/fst/TestFSTsMisc.java  |   31 +-
 .../apache/lucene/monitor/CandidateMatcher.java    |   60 +-
 .../apache/lucene/monitor/CollectingMatcher.java   |    9 +-
 .../lucene/monitor/ConcurrentQueryLoader.java      |   59 +-
 .../apache/lucene/monitor/CustomQueryHandler.java  |   15 +-
 .../org/apache/lucene/monitor/DocumentBatch.java   |   11 +-
 .../org/apache/lucene/monitor/ExplainingMatch.java |   54 +-
 .../lucene/monitor/ForceNoBulkScoringQuery.java    |   12 +-
 .../org/apache/lucene/monitor/HighlightsMatch.java |  144 +-
 .../org/apache/lucene/monitor/MatcherFactory.java  |    5 +-
 .../org/apache/lucene/monitor/MatchingQueries.java |   33 +-
 .../java/org/apache/lucene/monitor/Monitor.java    |  159 +-
 .../lucene/monitor/MonitorConfiguration.java       |   30 +-
 .../org/apache/lucene/monitor/MonitorQuery.java    |   44 +-
 .../lucene/monitor/MonitorQuerySerializer.java     |   22 +-
 .../lucene/monitor/MonitorUpdateListener.java      |   40 +-
 .../lucene/monitor/MultiMatchingQueries.java       |   37 +-
 .../monitor/MultipassTermFilteredPresearcher.java  |   77 +-
 .../org/apache/lucene/monitor/ParallelMatcher.java |   64 +-
 .../apache/lucene/monitor/PartitionMatcher.java    |   58 +-
 .../org/apache/lucene/monitor/Presearcher.java     |   41 +-
 .../apache/lucene/monitor/PresearcherMatch.java    |   12 +-
 .../apache/lucene/monitor/PresearcherMatches.java  |   12 +-
 .../org/apache/lucene/monitor/QueryAnalyzer.java   |   41 +-
 .../org/apache/lucene/monitor/QueryCacheEntry.java |   21 +-
 .../org/apache/lucene/monitor/QueryDecomposer.java |   24 +-
 .../java/org/apache/lucene/monitor/QueryIndex.java |   86 +-
 .../java/org/apache/lucene/monitor/QueryMatch.java |   30 +-
 .../apache/lucene/monitor/QueryTimeListener.java   |   20 +-
 .../java/org/apache/lucene/monitor/QueryTree.java  |   77 +-
 .../apache/lucene/monitor/RegexpQueryHandler.java  |   44 +-
 .../org/apache/lucene/monitor/ScoringMatch.java    |   15 +-
 .../java/org/apache/lucene/monitor/SlowLog.java    |   22 +-
 .../lucene/monitor/SuffixingNGramTokenFilter.java  |   29 +-
 .../lucene/monitor/TermFilteredPresearcher.java    |  126 +-
 .../org/apache/lucene/monitor/TermWeightor.java    |   48 +-
 .../lucene/monitor/TermsEnumTokenStream.java       |    8 +-
 .../org/apache/lucene/monitor/package-info.java    |  135 +-
 .../lucene/monitor/ConcurrentMatcherTestBase.java  |   23 +-
 .../FieldFilterPresearcherComponentTestBase.java   |   22 +-
 .../org/apache/lucene/monitor/MonitorTestBase.java |    1 -
 .../apache/lucene/monitor/PresearcherTestBase.java |   51 +-
 .../monitor/TestBooleanClauseWeightings.java       |   36 +-
 .../lucene/monitor/TestBooleanTermExtractor.java   |   16 +-
 .../apache/lucene/monitor/TestCachePurging.java    |   76 +-
 .../lucene/monitor/TestConcurrentQueryLoader.java  |    1 -
 .../apache/lucene/monitor/TestDocumentBatch.java   |   17 +-
 .../lucene/monitor/TestExplainingMatcher.java      |    4 +-
 .../org/apache/lucene/monitor/TestExtractors.java  |   26 +-
 .../TestFieldFilteredMultipassPresearcher.java     |    4 +-
 .../monitor/TestFieldTermFilteredPresearcher.java  |    3 +-
 .../monitor/TestForceNoBulkScoringQuery.java       |   11 +-
 .../lucene/monitor/TestHighlightingMatcher.java    |  319 +--
 .../lucene/monitor/TestMatchAllPresearcher.java    |    1 -
 .../org/apache/lucene/monitor/TestMonitor.java     |  105 +-
 .../lucene/monitor/TestMonitorErrorHandling.java   |   15 +-
 .../lucene/monitor/TestMonitorPersistence.java     |   29 +-
 .../lucene/monitor/TestMultipassPresearcher.java   |   67 +-
 .../apache/lucene/monitor/TestParallelMatcher.java |    3 +-
 .../lucene/monitor/TestPartitionMatcher.java       |    4 +-
 .../monitor/TestPresearcherMatchCollector.java     |    6 +-
 .../apache/lucene/monitor/TestQueryAnalyzer.java   |   74 +-
 .../apache/lucene/monitor/TestQueryDecomposer.java |   44 +-
 .../lucene/monitor/TestQueryTermComparators.java   |   17 +-
 .../apache/lucene/monitor/TestQueryTermFilter.java |   12 +-
 .../lucene/monitor/TestRegexpQueryHandler.java     |   68 +-
 .../apache/lucene/monitor/TestSimilarities.java    |   19 +-
 .../apache/lucene/monitor/TestSimpleMatcher.java   |    4 +-
 .../apache/lucene/monitor/TestSpanExtractors.java  |   66 +-
 .../monitor/TestSuffixingNGramTokenizer.java       |   61 +-
 .../apache/lucene/monitor/TestTermPresearcher.java |   62 +-
 .../lucene/monitor/TestTermsEnumTokenFilter.java   |   23 +-
 .../monitor/TestWildcardTermPresearcher.java       |   36 +-
 .../lucene/queryparser/charstream/CharStream.java  |   77 +-
 .../queryparser/charstream/FastCharStream.java     |   43 +-
 .../queryparser/charstream/package-info.java       |    4 +-
 .../queryparser/classic/MultiFieldQueryParser.java |  193 +-
 .../queryparser/classic/QueryParserBase.java       |  542 ++--
 .../lucene/queryparser/classic/package-info.java   |  481 ++--
 .../complexPhrase/ComplexPhraseQueryParser.java    |  157 +-
 .../queryparser/complexPhrase/package-info.java    |    7 +-
 .../queryparser/ext/ExtendableQueryParser.java     |  102 +-
 .../lucene/queryparser/ext/ExtensionQuery.java     |   23 +-
 .../apache/lucene/queryparser/ext/Extensions.java  |  184 +-
 .../lucene/queryparser/ext/ParserExtension.java    |   35 +-
 .../lucene/queryparser/ext/package-info.java       |    8 +-
 .../queryparser/flexible/core/QueryNodeError.java  |   23 +-
 .../flexible/core/QueryNodeException.java          |   20 +-
 .../flexible/core/QueryNodeParseException.java     |   46 +-
 .../flexible/core/QueryParserHelper.java           |  163 +-
 .../flexible/core/builders/QueryBuilder.java       |   12 +-
 .../flexible/core/builders/QueryTreeBuilder.java   |   99 +-
 .../flexible/core/builders/package-info.java       |   16 +-
 .../flexible/core/config/AbstractQueryConfig.java  |   58 +-
 .../flexible/core/config/ConfigurationKey.java     |   17 +-
 .../flexible/core/config/FieldConfig.java          |   19 +-
 .../flexible/core/config/FieldConfigListener.java  |   14 +-
 .../flexible/core/config/QueryConfigHandler.java   |   54 +-
 .../flexible/core/config/package-info.java         |   28 +-
 .../core/messages/QueryParserMessages.java         |    5 +-
 .../flexible/core/messages/package-info.java       |    9 +-
 .../flexible/core/nodes/AndQueryNode.java          |   31 +-
 .../flexible/core/nodes/AnyQueryNode.java          |   49 +-
 .../flexible/core/nodes/BooleanQueryNode.java      |   28 +-
 .../flexible/core/nodes/BoostQueryNode.java        |   48 +-
 .../flexible/core/nodes/DeletedQueryNode.java      |    8 +-
 .../flexible/core/nodes/FieldQueryNode.java        |   89 +-
 .../core/nodes/FieldValuePairQueryNode.java        |   12 +-
 .../flexible/core/nodes/FieldableNode.java         |   19 +-
 .../flexible/core/nodes/FuzzyQueryNode.java        |   43 +-
 .../flexible/core/nodes/GroupQueryNode.java        |   24 +-
 .../flexible/core/nodes/MatchAllDocsQueryNode.java |    4 +-
 .../flexible/core/nodes/MatchNoDocsQueryNode.java  |    6 +-
 .../flexible/core/nodes/ModifierQueryNode.java     |   92 +-
 .../flexible/core/nodes/NoTokenFoundQueryNode.java |    4 +-
 .../flexible/core/nodes/OpaqueQueryNode.java       |   22 +-
 .../flexible/core/nodes/OrQueryNode.java           |   30 +-
 .../flexible/core/nodes/PathQueryNode.java         |   87 +-
 .../flexible/core/nodes/PhraseSlopQueryNode.java   |   40 +-
 .../flexible/core/nodes/ProximityQueryNode.java    |  140 +-
 .../queryparser/flexible/core/nodes/QueryNode.java |   47 +-
 .../flexible/core/nodes/QueryNodeImpl.java         |   68 +-
 .../flexible/core/nodes/QuotedFieldQueryNode.java  |   32 +-
 .../flexible/core/nodes/RangeQueryNode.java        |   15 +-
 .../flexible/core/nodes/SlopQueryNode.java         |   46 +-
 .../flexible/core/nodes/TextableQueryNode.java     |    5 +-
 .../core/nodes/TokenizedPhraseQueryNode.java       |   18 +-
 .../flexible/core/nodes/ValueQueryNode.java        |   10 +-
 .../flexible/core/nodes/package-info.java          |  108 +-
 .../queryparser/flexible/core/package-info.java    |   54 +-
 .../flexible/core/parser/EscapeQuerySyntax.java    |   20 +-
 .../flexible/core/parser/SyntaxParser.java         |   13 +-
 .../flexible/core/parser/package-info.java         |   29 +-
 .../NoChildOptimizationQueryNodeProcessor.java     |   31 +-
 .../core/processors/QueryNodeProcessor.java        |   52 +-
 .../core/processors/QueryNodeProcessorImpl.java    |  119 +-
 .../processors/QueryNodeProcessorPipeline.java     |  160 +-
 .../RemoveDeletedQueryNodesProcessor.java          |   27 +-
 .../flexible/core/processors/package-info.java     |   48 +-
 .../flexible/core/util/QueryNodeOperation.java     |   86 +-
 .../flexible/core/util/StringUtils.java            |   12 +-
 .../flexible/core/util/UnescapedCharSequence.java  |   45 +-
 .../flexible/core/util/package-info.java           |   10 +-
 .../queryparser/flexible/messages/Message.java     |    5 +-
 .../queryparser/flexible/messages/MessageImpl.java |    6 +-
 .../lucene/queryparser/flexible/messages/NLS.java  |   69 +-
 .../flexible/messages/NLSException.java            |   14 +-
 .../flexible/messages/package-info.java            |   73 +-
 .../flexible/precedence/PrecedenceQueryParser.java |   36 +-
 .../flexible/precedence/package-info.java          |   22 +-
 .../BooleanModifiersQueryNodeProcessor.java        |   45 +-
 .../PrecedenceQueryNodeProcessorPipeline.java      |   32 +-
 .../precedence/processors/package-info.java        |   38 +-
 .../standard/CommonQueryParserConfiguration.java   |  133 +-
 .../flexible/standard/QueryParserUtil.java         |  119 +-
 .../flexible/standard/StandardQueryParser.java     |  347 ++-
 .../standard/builders/AnyQueryNodeBuilder.java     |   22 +-
 .../standard/builders/BooleanQueryNodeBuilder.java |   48 +-
 .../standard/builders/BoostQueryNodeBuilder.java   |   12 +-
 .../standard/builders/DummyQueryNodeBuilder.java   |   15 +-
 .../standard/builders/FieldQueryNodeBuilder.java   |    9 +-
 .../standard/builders/FuzzyQueryNodeBuilder.java   |   19 +-
 .../standard/builders/GroupQueryNodeBuilder.java   |   10 +-
 .../builders/MatchAllDocsQueryNodeBuilder.java     |   18 +-
 .../builders/MatchNoDocsQueryNodeBuilder.java      |   16 +-
 .../builders/ModifierQueryNodeBuilder.java         |   10 +-
 .../builders/MultiPhraseQueryNodeBuilder.java      |   18 +-
 .../standard/builders/PhraseQueryNodeBuilder.java  |   12 +-
 .../builders/PointRangeQueryNodeBuilder.java       |   29 +-
 .../builders/PrefixWildcardQueryNodeBuilder.java   |   18 +-
 .../standard/builders/RegexpQueryNodeBuilder.java  |   13 +-
 .../standard/builders/SlopQueryNodeBuilder.java    |   19 +-
 .../standard/builders/StandardQueryBuilder.java    |    7 +-
 .../builders/StandardQueryTreeBuilder.java         |   24 +-
 .../builders/TermRangeQueryNodeBuilder.java        |   38 +-
 .../builders/WildcardQueryNodeBuilder.java         |   18 +-
 .../flexible/standard/builders/package-info.java   |   23 +-
 .../standard/config/FieldBoostMapFCListener.java   |   18 +-
 .../config/FieldDateResolutionFCListener.java      |   20 +-
 .../flexible/standard/config/FuzzyConfig.java      |    9 +-
 .../flexible/standard/config/NumberDateFormat.java |   34 +-
 .../flexible/standard/config/PointsConfig.java     |   67 +-
 .../standard/config/PointsConfigListener.java      |   28 +-
 .../config/StandardQueryConfigHandler.java         |  149 +-
 .../flexible/standard/config/package-info.java     |   20 +-
 .../standard/nodes/AbstractRangeQueryNode.java     |  115 +-
 .../standard/nodes/BooleanModifierNode.java        |    9 +-
 .../standard/nodes/MultiPhraseQueryNode.java       |   20 +-
 .../flexible/standard/nodes/PointQueryNode.java    |   78 +-
 .../standard/nodes/PointRangeQueryNode.java        |   98 +-
 .../standard/nodes/PrefixWildcardQueryNode.java    |   25 +-
 .../flexible/standard/nodes/RegexpQueryNode.java   |   32 +-
 .../flexible/standard/nodes/SynonymQueryNode.java  |    1 -
 .../standard/nodes/TermRangeQueryNode.java         |   25 +-
 .../flexible/standard/nodes/WildcardQueryNode.java |   20 +-
 .../flexible/standard/nodes/package-info.java      |   13 +-
 .../flexible/standard/package-info.java            |   31 +-
 .../standard/parser/EscapeQuerySyntaxImpl.java     |  131 +-
 .../flexible/standard/parser/package-info.java     |   17 +-
 .../processors/AllowLeadingWildcardProcessor.java  |   42 +-
 .../processors/AnalyzerQueryNodeProcessor.java     |  153 +-
 .../BooleanQuery2ModifierNodeProcessor.java        |  112 +-
 ...nSingleChildOptimizationQueryNodeProcessor.java |   25 +-
 .../processors/BoostQueryNodeProcessor.java        |   25 +-
 .../DefaultPhraseSlopQueryNodeProcessor.java       |   34 +-
 .../processors/FuzzyQueryNodeProcessor.java        |   28 +-
 .../processors/MatchAllDocsQueryNodeProcessor.java |   19 +-
 .../processors/MultiFieldQueryNodeProcessor.java   |   26 +-
 .../MultiTermRewriteMethodProcessor.java           |   17 +-
 .../processors/OpenRangeQueryNodeProcessor.java    |   42 +-
 .../processors/PhraseSlopQueryNodeProcessor.java   |   17 +-
 .../processors/PointQueryNodeProcessor.java        |   92 +-
 .../processors/PointRangeQueryNodeProcessor.java   |   56 +-
 .../processors/RegexpQueryNodeProcessor.java       |    5 +-
 .../RemoveEmptyNonLeafQueryNodeProcessor.java      |   28 +-
 .../StandardQueryNodeProcessorPipeline.java        |   25 +-
 .../processors/TermRangeQueryNodeProcessor.java    |   85 +-
 .../processors/WildcardQueryNodeProcessor.java     |   85 +-
 .../flexible/standard/processors/package-info.java |   18 +-
 .../queryparser/simple/SimpleQueryParser.java      |  200 +-
 .../lucene/queryparser/simple/package-info.java    |    6 +-
 .../queryparser/surround/parser/package-info.java  |    9 +-
 .../queryparser/surround/query/AndQuery.java       |   18 +-
 .../surround/query/BasicQueryFactory.java          |   46 +-
 .../queryparser/surround/query/ComposedQuery.java  |   68 +-
 .../queryparser/surround/query/DistanceQuery.java  |   59 +-
 .../surround/query/DistanceRewriteQuery.java       |    7 +-
 .../surround/query/DistanceSubQuery.java           |   18 +-
 .../queryparser/surround/query/FieldsQuery.java    |   51 +-
 .../queryparser/surround/query/NotQuery.java       |   30 +-
 .../lucene/queryparser/surround/query/OrQuery.java |   27 +-
 .../queryparser/surround/query/RewriteQuery.java   |   37 +-
 .../queryparser/surround/query/SimpleTerm.java     |   87 +-
 .../surround/query/SimpleTermRewriteQuery.java     |   35 +-
 .../surround/query/SpanNearClauseFactory.java      |   97 +-
 .../surround/query/SrndBooleanQuery.java           |   18 +-
 .../surround/query/SrndPrefixQuery.java            |   51 +-
 .../queryparser/surround/query/SrndQuery.java      |   75 +-
 .../queryparser/surround/query/SrndTermQuery.java  |   34 +-
 .../queryparser/surround/query/SrndTruncQuery.java |   59 +-
 .../surround/query/TooManyBasicQueries.java        |   12 +-
 .../queryparser/surround/query/package-info.java   |   21 +-
 .../apache/lucene/queryparser/xml/CoreParser.java  |   58 +-
 .../queryparser/xml/CorePlusExtensionsParser.java  |   10 +-
 .../queryparser/xml/CorePlusQueriesParser.java     |    9 +-
 .../apache/lucene/queryparser/xml/DOMUtils.java    |   74 +-
 .../lucene/queryparser/xml/ParserException.java    |    5 +-
 .../lucene/queryparser/xml/QueryBuilder.java       |    4 +-
 .../queryparser/xml/QueryBuilderFactory.java       |    8 +-
 .../xml/builders/BooleanQueryBuilder.java          |   15 +-
 .../xml/builders/BoostingTermBuilder.java          |   14 +-
 .../xml/builders/ConstantScoreQueryBuilder.java    |    6 +-
 .../xml/builders/DisjunctionMaxQueryBuilder.java   |   12 +-
 .../xml/builders/FuzzyLikeThisQueryBuilder.java    |    8 +-
 .../xml/builders/LikeThisQueryBuilder.java         |   41 +-
 .../xml/builders/MatchAllDocsQueryBuilder.java     |   11 +-
 .../xml/builders/PointRangeQueryBuilder.java       |   22 +-
 .../xml/builders/RangeQueryBuilder.java            |    8 +-
 .../queryparser/xml/builders/SpanBuilderBase.java  |   10 +-
 .../queryparser/xml/builders/SpanFirstBuilder.java |   10 +-
 .../queryparser/xml/builders/SpanNearBuilder.java  |   13 +-
 .../queryparser/xml/builders/SpanNotBuilder.java   |   10 +-
 .../queryparser/xml/builders/SpanOrBuilder.java    |   13 +-
 .../xml/builders/SpanOrTermsBuilder.java           |   22 +-
 .../xml/builders/SpanPositionRangeBuilder.java     |    5 +-
 .../queryparser/xml/builders/SpanQueryBuilder.java |    7 +-
 .../xml/builders/SpanQueryBuilderFactory.java      |   11 +-
 .../queryparser/xml/builders/SpanTermBuilder.java  |   10 +-
 .../queryparser/xml/builders/TermQueryBuilder.java |   12 +-
 .../xml/builders/TermsQueryBuilder.java            |   13 +-
 .../xml/builders/UserInputQueryBuilder.java        |   20 +-
 .../queryparser/xml/builders/package-info.java     |    7 +-
 .../lucene/queryparser/xml/package-info.java       |    7 +-
 .../queryparser/classic/TestMultiAnalyzer.java     |  138 +-
 .../classic/TestMultiFieldQueryParser.java         |  188 +-
 .../classic/TestMultiPhraseQueryParsing.java       |   41 +-
 .../queryparser/classic/TestQueryParser.java       |  535 ++--
 .../complexPhrase/TestComplexPhraseQuery.java      |   84 +-
 .../lucene/queryparser/ext/ExtensionStub.java      |    4 +-
 .../queryparser/ext/TestExtendableQueryParser.java |   64 +-
 .../lucene/queryparser/ext/TestExtensions.java     |   21 +-
 .../core/builders/TestQueryTreeBuilder.java        |   24 +-
 .../flexible/core/nodes/TestQueryNode.java         |   17 +-
 .../queryparser/flexible/messages/TestNLS.java     |   68 +-
 .../precedence/TestPrecedenceQueryParser.java      |  180 +-
 .../flexible/spans/SpanOrQueryNodeBuilder.java     |    7 +-
 .../flexible/spans/SpanTermQueryNodeBuilder.java   |   11 +-
 .../flexible/spans/SpansQueryConfigHandler.java    |    9 +-
 .../flexible/spans/SpansQueryTreeBuilder.java      |   10 +-
 .../spans/SpansValidatorQueryNodeProcessor.java    |   29 +-
 .../flexible/spans/TestSpanQueryParser.java        |  152 +-
 .../spans/TestSpanQueryParserSimpleSample.java     |   67 +-
 .../flexible/spans/UniqueFieldAttribute.java       |    7 +-
 .../flexible/spans/UniqueFieldAttributeImpl.java   |   17 +-
 .../spans/UniqueFieldQueryNodeProcessor.java       |   20 +-
 .../standard/TestMultiAnalyzerQPHelper.java        |   96 +-
 .../flexible/standard/TestMultiFieldQPHelper.java  |  168 +-
 .../flexible/standard/TestPointQueryParser.java    |   71 +-
 .../flexible/standard/TestQPHelper.java            |  458 ++--
 .../flexible/standard/TestStandardQP.java          |  109 +-
 .../queryparser/simple/TestSimpleQueryParser.java  |   70 +-
 .../surround/query/BooleanQueryTst.java            |   27 +-
 .../surround/query/ExceptionQueryTst.java          |   17 +-
 .../surround/query/SingleFieldTestDb.java          |   27 +-
 .../queryparser/surround/query/SrndQueryTest.java  |   11 +-
 .../surround/query/Test01Exceptions.java           |    4 -
 .../queryparser/surround/query/Test02Boolean.java  |  101 +-
 .../queryparser/surround/query/Test03Distance.java |  203 +-
 .../queryparser/util/QueryParserTestBase.java      |  759 +++---
 .../queryparser/xml/CoreParserTestIndexData.java   |   20 +-
 .../lucene/queryparser/xml/TestCoreParser.java     |   75 +-
 .../xml/TestCorePlusExtensionsParser.java          |    3 +-
 .../queryparser/xml/TestCorePlusQueriesParser.java |    1 -
 .../IndexAndTaxonomyReplicationHandler.java        |  104 +-
 .../replicator/IndexAndTaxonomyRevision.java       |  120 +-
 .../lucene/replicator/IndexInputInputStream.java   |   26 +-
 .../lucene/replicator/IndexReplicationHandler.java |  166 +-
 .../apache/lucene/replicator/IndexRevision.java    |   69 +-
 .../apache/lucene/replicator/LocalReplicator.java  |  117 +-
 .../replicator/PerSessionDirectoryFactory.java     |   17 +-
 .../lucene/replicator/ReplicationClient.java       |  213 +-
 .../org/apache/lucene/replicator/Replicator.java   |   75 +-
 .../org/apache/lucene/replicator/Revision.java     |   55 +-
 .../org/apache/lucene/replicator/RevisionFile.java |   20 +-
 .../lucene/replicator/SessionExpiredException.java |   25 +-
 .../org/apache/lucene/replicator/SessionToken.java |   40 +-
 .../lucene/replicator/http/HttpClientBase.java     |  140 +-
 .../lucene/replicator/http/HttpReplicator.java     |   97 +-
 .../lucene/replicator/http/ReplicationService.java |   96 +-
 .../lucene/replicator/http/package-info.java       |    8 +-
 .../org/apache/lucene/replicator/nrt/CopyJob.java  |   99 +-
 .../apache/lucene/replicator/nrt/CopyOneFile.java  |   53 +-
 .../apache/lucene/replicator/nrt/CopyState.java    |   21 +-
 .../apache/lucene/replicator/nrt/FileMetaData.java |   12 +-
 .../org/apache/lucene/replicator/nrt/Node.java     |  130 +-
 .../replicator/nrt/NodeCommunicationException.java |    4 +-
 .../replicator/nrt/PreCopyMergedSegmentWarmer.java |   25 +-
 .../apache/lucene/replicator/nrt/PrimaryNode.java  |  133 +-
 .../lucene/replicator/nrt/ReplicaFileDeleter.java  |   39 +-
 .../apache/lucene/replicator/nrt/ReplicaNode.java  |  477 ++--
 .../nrt/SegmentInfosSearcherManager.java           |   45 +-
 .../apache/lucene/replicator/nrt/package-info.java |    6 +-
 .../org/apache/lucene/replicator/package-info.java |   61 +-
 .../lucene/replicator/ReplicatorTestCase.java      |   73 +-
 .../TestIndexAndTaxonomyReplicationClient.java     |  354 +--
 .../replicator/TestIndexAndTaxonomyRevision.java   |   38 +-
 .../replicator/TestIndexReplicationClient.java     |  270 +-
 .../lucene/replicator/TestIndexRevision.java       |   30 +-
 .../lucene/replicator/TestLocalReplicator.java     |  100 +-
 .../apache/lucene/replicator/TestSessionToken.java |    6 +-
 .../lucene/replicator/http/ReplicationServlet.java |   11 +-
 .../lucene/replicator/http/TestHttpReplicator.java |   62 +-
 .../org/apache/lucene/replicator/nrt/Jobs.java     |   18 +-
 .../apache/lucene/replicator/nrt/NodeProcess.java  |   31 +-
 .../lucene/replicator/nrt/SimpleCopyJob.java       |  108 +-
 .../lucene/replicator/nrt/SimplePrimaryNode.java   |  437 ++--
 .../lucene/replicator/nrt/SimpleReplicaNode.java   |  357 +--
 .../apache/lucene/replicator/nrt/SimpleServer.java |  159 +-
 .../lucene/replicator/nrt/SimpleTransLog.java      |   93 +-
 .../lucene/replicator/nrt/TestNRTReplication.java  |  189 +-
 .../replicator/nrt/TestStressNRTReplication.java   |  512 ++--
 .../apache/lucene/replicator/nrt/ThreadPumper.java |   62 +-
 .../lucene/payloads/PayloadSpanCollector.java      |   18 +-
 .../apache/lucene/payloads/PayloadSpanUtil.java    |   39 +-
 .../org/apache/lucene/payloads/package-info.java   |    4 +-
 .../codecs/idversion/IDVersionPostingsFormat.java  |   90 +-
 .../codecs/idversion/IDVersionPostingsReader.java  |   34 +-
 .../codecs/idversion/IDVersionPostingsWriter.java  |   55 +-
 .../idversion/IDVersionSegmentTermsEnum.java       |  547 ++--
 .../idversion/IDVersionSegmentTermsEnumFrame.java  |  159 +-
 .../sandbox/codecs/idversion/SingleDocsEnum.java   |    3 +-
 .../codecs/idversion/SinglePostingsEnum.java       |    2 +-
 .../idversion/VersionBlockTreeTermsReader.java     |  126 +-
 .../idversion/VersionBlockTreeTermsWriter.java     |  340 ++-
 .../codecs/idversion/VersionFieldReader.java       |   64 +-
 .../sandbox/codecs/idversion/package-info.java     |   10 +-
 .../lucene/sandbox/document/BigIntegerPoint.java   |  157 +-
 .../document/DoublePointMultiRangeBuilder.java     |   11 +-
 .../document/FloatPointMultiRangeBuilder.java      |   14 +-
 .../document/FloatPointNearestNeighbor.java        |  136 +-
 .../lucene/sandbox/document/HalfFloatPoint.java    |  196 +-
 .../document/IntPointMultiRangeBuilder.java        |   10 +-
 .../lucene/sandbox/document/LatLonBoundingBox.java |  145 +-
 .../document/LongPointMultiRangeBuilder.java       |   10 +-
 .../lucene/sandbox/document/package-info.java      |    9 +-
 .../lucene/sandbox/queries/FuzzyLikeThisQuery.java |  277 +--
 .../lucene/sandbox/queries/package-info.java       |    6 +-
 .../apache/lucene/sandbox/search/BM25FQuery.java   |  105 +-
 .../lucene/sandbox/search/CoveringQuery.java       |   61 +-
 .../lucene/sandbox/search/CoveringScorer.java      |  186 +-
 .../sandbox/search/DocValuesNumbersQuery.java      |   79 +-
 .../lucene/sandbox/search/DocValuesTermsQuery.java |  163 +-
 .../IndexSortSortedNumericDocValuesRangeQuery.java |   88 +-
 .../search/LargeNumHitsTopDocsCollector.java       |   35 +-
 .../search/LatLonPointPrototypeQueries.java        |   54 +-
 .../apache/lucene/sandbox/search/LongHashSet.java  |    9 +-
 .../sandbox/search/MultiNormsLeafSimScorer.java    |   46 +-
 .../lucene/sandbox/search/MultiRangeQuery.java     |  166 +-
 .../lucene/sandbox/search/NearestNeighbor.java     |  212 +-
 .../lucene/sandbox/search/PhraseWildcardQuery.java |  402 +--
 .../lucene/sandbox/search/TermAutomatonQuery.java  |  161 +-
 .../lucene/sandbox/search/TermAutomatonScorer.java |   86 +-
 .../search/TokenStreamToTermAutomatonQuery.java    |   29 +-
 .../apache/lucene/sandbox/search/package-info.java |    7 +-
 .../lucene/payloads/TestPayloadSpanUtil.java       |   19 +-
 .../codecs/idversion/StringAndPayloadField.java    |    4 +-
 .../idversion/TestIDVersionPostingsFormat.java     |  663 +++--
 .../sandbox/document/TestBigIntegerPoint.java      |   86 +-
 .../sandbox/document/TestDoubleRangeField.java     |   38 +-
 .../document/TestFloatPointNearestNeighbor.java    |   98 +-
 .../sandbox/document/TestHalfFloatPoint.java       |   43 +-
 .../sandbox/queries/TestFuzzyLikeThisQuery.java    |   22 +-
 .../lucene/sandbox/search/LongHashSetTests.java    |   11 +-
 .../lucene/sandbox/search/TestBM25FQuery.java      |   66 +-
 .../lucene/sandbox/search/TestCoveringQuery.java   |   29 +-
 .../sandbox/search/TestDocValuesNumbersQuery.java  |   39 +-
 .../sandbox/search/TestDocValuesTermsQuery.java    |   29 +-
 .../sandbox/search/TestFieldCacheTermsFilter.java  |   28 +-
 ...tIndexSortSortedNumericDocValuesRangeQuery.java |   51 +-
 .../search/TestLargeNumHitsTopDocsCollector.java   |   36 +-
 .../search/TestLatLonBoundingBoxQueries.java       |   90 +-
 .../sandbox/search/TestMultiRangeQueries.java      |   66 +-
 .../apache/lucene/sandbox/search/TestNearest.java  |  120 +-
 .../sandbox/search/TestPhraseWildcardQuery.java    |  378 +--
 .../sandbox/search/TestTermAutomatonQuery.java     |  209 +-
 .../org/apache/lucene/spatial/ShapeValues.java     |   11 +-
 .../apache/lucene/spatial/ShapeValuesSource.java   |   10 +-
 .../org/apache/lucene/spatial/SpatialStrategy.java |  115 +-
 .../spatial/bbox/BBoxOverlapRatioValueSource.java  |  169 +-
 .../spatial/bbox/BBoxSimilarityValueSource.java    |   62 +-
 .../apache/lucene/spatial/bbox/BBoxStrategy.java   |  227 +-
 .../lucene/spatial/bbox/BBoxValueSource.java       |   15 +-
 .../apache/lucene/spatial/bbox/package-info.java   |    6 +-
 .../composite/CompositeSpatialStrategy.java        |   64 +-
 .../spatial/composite/CompositeVerifyQuery.java    |   32 +-
 .../composite/IntersectsRPTVerifyQuery.java        |  103 +-
 .../lucene/spatial/composite/package-info.java     |    2 +-
 .../org/apache/lucene/spatial/package-info.java    |    2 +-
 .../spatial/prefix/AbstractPrefixTreeQuery.java    |   33 +-
 .../prefix/AbstractVisitingPrefixTreeQuery.java    |  242 +-
 .../prefix/BytesRefIteratorTokenStream.java        |    6 +-
 .../spatial/prefix/CellToBytesRefIterator.java     |    6 +-
 .../spatial/prefix/ContainsPrefixTreeQuery.java    |  148 +-
 .../lucene/spatial/prefix/HeatmapFacetCounter.java |  251 +-
 .../spatial/prefix/IntersectsPrefixTreeQuery.java  |   29 +-
 .../prefix/NumberRangePrefixTreeStrategy.java      |  121 +-
 .../prefix/PointPrefixTreeFieldCacheProvider.java  |   16 +-
 .../spatial/prefix/PrefixTreeFacetCounter.java     |  128 +-
 .../lucene/spatial/prefix/PrefixTreeStrategy.java  |  151 +-
 .../prefix/RecursivePrefixTreeStrategy.java        |  107 +-
 .../prefix/TermQueryPrefixTreeStrategy.java        |   52 +-
 .../spatial/prefix/WithinPrefixTreeQuery.java      |  147 +-
 .../apache/lucene/spatial/prefix/package-info.java |    4 +-
 .../apache/lucene/spatial/prefix/tree/Cell.java    |   91 +-
 .../lucene/spatial/prefix/tree/CellCanPrune.java   |    9 +-
 .../lucene/spatial/prefix/tree/CellIterator.java   |   26 +-
 .../spatial/prefix/tree/DateRangePrefixTree.java   |  361 +--
 .../spatial/prefix/tree/FilterCellIterator.java    |   15 +-
 .../spatial/prefix/tree/GeohashPrefixTree.java     |   58 +-
 .../lucene/spatial/prefix/tree/LegacyCell.java     |   97 +-
 .../spatial/prefix/tree/LegacyPrefixTree.java      |   39 +-
 .../spatial/prefix/tree/NumberRangePrefixTree.java |  526 ++--
 .../spatial/prefix/tree/PackedQuadPrefixTree.java  |  207 +-
 .../lucene/spatial/prefix/tree/QuadPrefixTree.java |  117 +-
 .../lucene/spatial/prefix/tree/S2PrefixTree.java   |  221 +-
 .../spatial/prefix/tree/S2PrefixTreeCell.java      |  442 ++--
 .../lucene/spatial/prefix/tree/S2ShapeFactory.java |    7 +-
 .../spatial/prefix/tree/SingletonCellIterator.java |    3 +-
 .../spatial/prefix/tree/SpatialPrefixTree.java     |   61 +-
 .../prefix/tree/SpatialPrefixTreeFactory.java      |   48 +-
 .../spatial/prefix/tree/TreeCellIterator.java      |   53 +-
 .../lucene/spatial/prefix/tree/package-info.java   |   19 +-
 .../apache/lucene/spatial/query/SpatialArgs.java   |   40 +-
 .../lucene/spatial/query/SpatialArgsParser.java    |   50 +-
 .../lucene/spatial/query/SpatialOperation.java     |  194 +-
 .../spatial/query/UnsupportedSpatialOperation.java |    4 +-
 .../apache/lucene/spatial/query/package-info.java  |    4 +-
 .../spatial/serialized/SerializedDVStrategy.java   |   94 +-
 .../lucene/spatial/serialized/package-info.java    |    6 +-
 .../lucene/spatial/spatial4j/Geo3dBinaryCodec.java |   28 +-
 .../lucene/spatial/spatial4j/Geo3dCircleShape.java |   24 +-
 .../spatial/spatial4j/Geo3dDistanceCalculator.java |   28 +-
 .../lucene/spatial/spatial4j/Geo3dPointShape.java  |   10 +-
 .../spatial/spatial4j/Geo3dRectangleShape.java     |   63 +-
 .../lucene/spatial/spatial4j/Geo3dShape.java       |   36 +-
 .../spatial/spatial4j/Geo3dShapeFactory.java       |  133 +-
 .../spatial4j/Geo3dSpatialContextFactory.java      |   13 +-
 .../lucene/spatial/spatial4j/package-info.java     |    2 +-
 .../spatial/util/CachingDoubleValueSource.java     |   14 +-
 .../spatial/util/DistanceToShapeValueSource.java   |   42 +-
 .../spatial/util/ReciprocalDoubleValuesSource.java |   22 +-
 .../lucene/spatial/util/ShapeAreaValueSource.java  |   36 +-
 .../lucene/spatial/util/ShapeFieldCache.java       |   26 +-
 .../util/ShapeFieldCacheDistanceValueSource.java   |   64 +-
 .../spatial/util/ShapeFieldCacheProvider.java      |   25 +-
 .../lucene/spatial/util/ShapeValuesPredicate.java  |   25 +-
 .../apache/lucene/spatial/util/package-info.java   |    2 +-
 .../lucene/spatial/vector/DistanceValueSource.java |   55 +-
 .../lucene/spatial/vector/PointVectorStrategy.java |  156 +-
 .../apache/lucene/spatial/vector/package-info.java |    4 +-
 .../org/apache/lucene/spatial/SpatialExample.java  |  110 +-
 .../apache/lucene/spatial/SpatialMatchConcern.java |   11 +-
 .../org/apache/lucene/spatial/SpatialTestCase.java |   53 +-
 .../org/apache/lucene/spatial/SpatialTestData.java |   21 +-
 .../apache/lucene/spatial/SpatialTestQuery.java    |   37 +-
 .../apache/lucene/spatial/StrategyTestCase.java    |   74 +-
 .../lucene/spatial/TestDistanceStrategy.java       |   39 +-
 .../org/apache/lucene/spatial/TestPortedSolr3.java |   69 +-
 .../lucene/spatial/TestQueryEqualsHashCode.java    |   60 +-
 .../org/apache/lucene/spatial/TestSpatialArgs.java |    9 +-
 .../apache/lucene/spatial/TestTestFramework.java   |   40 +-
 .../lucene/spatial/bbox/TestBBoxStrategy.java      |  172 +-
 .../spatial/composite/TestCompositeStrategy.java   |   51 +-
 .../prefix/RandomSpatialOpStrategyTestCase.java    |   65 +-
 .../lucene/spatial/prefix/TestDateNRStrategy.java  |   44 +-
 .../spatial/prefix/TestHeatmapFacetCounter.java    |  137 +-
 .../lucene/spatial/prefix/TestJtsPolygon.java      |   53 +-
 .../spatial/prefix/TestNumberRangeFacets.java      |   82 +-
 .../prefix/TestRandomSpatialOpFuzzyPrefixTree.java |  311 +--
 .../TestRandomSpatialOpFuzzyPrefixTree50.java      |    5 +-
 .../prefix/TestRecursivePrefixTreeStrategy.java    |   50 +-
 .../prefix/TestTermQueryPrefixGridStrategy.java    |   30 +-
 .../prefix/tree/TestDateRangePrefixTree.java       |  240 +-
 .../spatial/prefix/tree/TestS2PrefixTree.java      |   34 +-
 .../spatial/prefix/tree/TestSpatialPrefixTree.java |   32 +-
 .../spatial/query/TestSpatialArgsParser.java       |   28 +-
 .../spatial/serialized/TestSerializedStrategy.java |    3 +-
 .../spatial/spatial4j/RandomizedShapeTestCase.java |   19 +-
 .../spatial4j/ShapeRectRelationTestCase.java       |   42 +-
 .../apache/lucene/spatial/spatial4j/TestGeo3d.java |   49 +-
 .../lucene/spatial/spatial4j/TestGeo3dRpt.java     |   51 +-
 .../TestGeo3dShapeSphereModelRectRelation.java     |   44 +-
 .../TestGeo3dShapeWGS84ModelRectRelation.java      |  120 +-
 .../spatial/vector/TestPointVectorStrategy.java    |   31 +-
 .../lucene/spatial3d/Geo3DDocValuesField.java      |  313 ++-
 .../org/apache/lucene/spatial3d/Geo3DPoint.java    |  151 +-
 .../spatial3d/Geo3DPointDistanceComparator.java    |   72 +-
 .../Geo3DPointOutsideDistanceComparator.java       |   55 +-
 .../spatial3d/Geo3DPointOutsideSortField.java      |   17 +-
 .../lucene/spatial3d/Geo3DPointSortField.java      |   15 +-
 .../org/apache/lucene/spatial3d/Geo3DUtil.java     |  156 +-
 .../lucene/spatial3d/PointInGeo3DShapeQuery.java   |   35 +-
 .../spatial3d/PointInShapeIntersectVisitor.java    |  108 +-
 .../apache/lucene/spatial3d/geom/ArcDistance.java  |   53 +-
 .../lucene/spatial3d/geom/BasePlanetObject.java    |   30 +-
 .../apache/lucene/spatial3d/geom/BaseXYZSolid.java |   81 +-
 .../org/apache/lucene/spatial3d/geom/Bounded.java  |    7 +-
 .../org/apache/lucene/spatial3d/geom/Bounds.java   |  181 +-
 .../lucene/spatial3d/geom/DistanceStyle.java       |  110 +-
 .../org/apache/lucene/spatial3d/geom/GeoArea.java  |   36 +-
 .../lucene/spatial3d/geom/GeoAreaFactory.java      |   28 +-
 .../apache/lucene/spatial3d/geom/GeoAreaShape.java |   16 +-
 .../org/apache/lucene/spatial3d/geom/GeoBBox.java  |    6 +-
 .../lucene/spatial3d/geom/GeoBBoxFactory.java      |   85 +-
 .../lucene/spatial3d/geom/GeoBaseAreaShape.java    |   62 +-
 .../apache/lucene/spatial3d/geom/GeoBaseBBox.java  |   12 +-
 .../lucene/spatial3d/geom/GeoBaseCircle.java       |    8 +-
 .../spatial3d/geom/GeoBaseCompositeAreaShape.java  |   74 +-
 .../geom/GeoBaseCompositeMembershipShape.java      |   21 +-
 .../spatial3d/geom/GeoBaseCompositeShape.java      |   37 +-
 .../spatial3d/geom/GeoBaseDistanceShape.java       |   38 +-
 .../spatial3d/geom/GeoBaseMembershipShape.java     |   22 +-
 .../apache/lucene/spatial3d/geom/GeoBasePath.java  |    8 +-
 .../lucene/spatial3d/geom/GeoBasePolygon.java      |    8 +-
 .../apache/lucene/spatial3d/geom/GeoBaseShape.java |   15 +-
 .../apache/lucene/spatial3d/geom/GeoCircle.java    |    3 +-
 .../lucene/spatial3d/geom/GeoCircleFactory.java    |   47 +-
 .../lucene/spatial3d/geom/GeoComplexPolygon.java   | 1857 +++++++++-----
 .../spatial3d/geom/GeoCompositeAreaShape.java      |   14 +-
 .../geom/GeoCompositeMembershipShape.java          |   17 +-
 .../lucene/spatial3d/geom/GeoCompositePolygon.java |   20 +-
 .../lucene/spatial3d/geom/GeoConcavePolygon.java   |  311 ++-
 .../lucene/spatial3d/geom/GeoConvexPolygon.java    |  316 +--
 .../geom/GeoDegenerateHorizontalLine.java          |  118 +-
 .../spatial3d/geom/GeoDegenerateLatitudeZone.java  |   46 +-
 .../geom/GeoDegenerateLongitudeSlice.java          |   68 +-
 .../lucene/spatial3d/geom/GeoDegeneratePath.java   |  796 +++---
 .../lucene/spatial3d/geom/GeoDegeneratePoint.java  |   87 +-
 .../spatial3d/geom/GeoDegenerateVerticalLine.java  |  125 +-
 .../apache/lucene/spatial3d/geom/GeoDistance.java  |   56 +-
 .../lucene/spatial3d/geom/GeoDistanceShape.java    |   21 +-
 .../lucene/spatial3d/geom/GeoExactCircle.java      |  314 ++-
 .../lucene/spatial3d/geom/GeoLatitudeZone.java     |   99 +-
 .../lucene/spatial3d/geom/GeoLongitudeSlice.java   |  109 +-
 .../lucene/spatial3d/geom/GeoMembershipShape.java  |    7 +-
 .../spatial3d/geom/GeoNorthLatitudeZone.java       |   61 +-
 .../lucene/spatial3d/geom/GeoNorthRectangle.java   |  196 +-
 .../lucene/spatial3d/geom/GeoOutsideDistance.java  |   23 +-
 .../org/apache/lucene/spatial3d/geom/GeoPath.java  |   37 +-
 .../lucene/spatial3d/geom/GeoPathFactory.java      |   12 +-
 .../org/apache/lucene/spatial3d/geom/GeoPoint.java |  230 +-
 .../lucene/spatial3d/geom/GeoPointShape.java       |    7 +-
 .../spatial3d/geom/GeoPointShapeFactory.java       |   11 +-
 .../apache/lucene/spatial3d/geom/GeoPolygon.java   |    4 +-
 .../lucene/spatial3d/geom/GeoPolygonFactory.java   | 1435 ++++++-----
 .../apache/lucene/spatial3d/geom/GeoRectangle.java |  227 +-
 .../apache/lucene/spatial3d/geom/GeoS2Shape.java   |  366 +--
 .../lucene/spatial3d/geom/GeoS2ShapeFactory.java   |   20 +-
 .../org/apache/lucene/spatial3d/geom/GeoShape.java |   39 +-
 .../apache/lucene/spatial3d/geom/GeoSizeable.java  |    4 +-
 .../spatial3d/geom/GeoSouthLatitudeZone.java       |   51 +-
 .../lucene/spatial3d/geom/GeoSouthRectangle.java   |  159 +-
 .../lucene/spatial3d/geom/GeoStandardCircle.java   |   93 +-
 .../lucene/spatial3d/geom/GeoStandardPath.java     | 1397 +++++++----
 .../geom/GeoWideDegenerateHorizontalLine.java      |  142 +-
 .../spatial3d/geom/GeoWideLongitudeSlice.java      |  132 +-
 .../spatial3d/geom/GeoWideNorthRectangle.java      |  178 +-
 .../lucene/spatial3d/geom/GeoWideRectangle.java    |  221 +-
 .../spatial3d/geom/GeoWideSouthRectangle.java      |  156 +-
 .../org/apache/lucene/spatial3d/geom/GeoWorld.java |   33 +-
 .../apache/lucene/spatial3d/geom/LatLonBounds.java |  181 +-
 .../lucene/spatial3d/geom/LinearDistance.java      |   53 +-
 .../spatial3d/geom/LinearSquaredDistance.java      |   53 +-
 .../apache/lucene/spatial3d/geom/Membership.java   |    1 -
 .../lucene/spatial3d/geom/NormalDistance.java      |   53 +-
 .../spatial3d/geom/NormalSquaredDistance.java      |   53 +-
 .../org/apache/lucene/spatial3d/geom/Plane.java    | 1681 ++++++++-----
 .../apache/lucene/spatial3d/geom/PlanetModel.java  |  410 ++-
 .../apache/lucene/spatial3d/geom/PlanetObject.java |    1 -
 .../lucene/spatial3d/geom/SerializableObject.java  |  279 ++-
 .../apache/lucene/spatial3d/geom/SidedPlane.java   |  171 +-
 .../lucene/spatial3d/geom/StandardObjects.java     |   92 +-
 .../lucene/spatial3d/geom/StandardXYZSolid.java    |  462 ++--
 .../org/apache/lucene/spatial3d/geom/Tools.java    |   14 +-
 .../org/apache/lucene/spatial3d/geom/Vector.java   |  268 +-
 .../apache/lucene/spatial3d/geom/XYZBounds.java    |  219 +-
 .../org/apache/lucene/spatial3d/geom/XYZSolid.java |    4 +-
 .../lucene/spatial3d/geom/XYZSolidFactory.java     |   42 +-
 .../apache/lucene/spatial3d/geom/XYdZSolid.java    |  183 +-
 .../apache/lucene/spatial3d/geom/XdYZSolid.java    |  176 +-
 .../apache/lucene/spatial3d/geom/XdYdZSolid.java   |   86 +-
 .../apache/lucene/spatial3d/geom/dXYZSolid.java    |  191 +-
 .../apache/lucene/spatial3d/geom/dXYdZSolid.java   |   86 +-
 .../apache/lucene/spatial3d/geom/dXdYZSolid.java   |   86 +-
 .../apache/lucene/spatial3d/geom/dXdYdZSolid.java  |   90 +-
 .../apache/lucene/spatial3d/geom/package-info.java |    2 +-
 .../org/apache/lucene/spatial3d/package-info.java  |    3 +-
 .../lucene/spatial3d/TestGeo3DDocValues.java       |   17 +-
 .../apache/lucene/spatial3d/TestGeo3DPoint.java    | 1414 +++++++----
 .../apache/lucene/spatial3d/geom/Geo3DUtil.java    |    6 +-
 .../spatial3d/geom/RandomGeo3dShapeGenerator.java  |  559 +++--
 .../geom/TestCompositeGeoPolygonRelationships.java |  971 ++++----
 .../apache/lucene/spatial3d/geom/TestGeoBBox.java  |  249 +-
 .../lucene/spatial3d/geom/TestGeoCircle.java       |  310 ++-
 .../spatial3d/geom/TestGeoConvexPolygon.java       |   12 +-
 .../lucene/spatial3d/geom/TestGeoExactCircle.java  |  181 +-
 .../apache/lucene/spatial3d/geom/TestGeoModel.java |   21 +-
 .../apache/lucene/spatial3d/geom/TestGeoPath.java  |  260 +-
 .../apache/lucene/spatial3d/geom/TestGeoPoint.java |   59 +-
 .../lucene/spatial3d/geom/TestGeoPolygon.java      | 2607 +++++++++++++-------
 .../apache/lucene/spatial3d/geom/TestPlane.java    |   29 +-
 .../spatial3d/geom/TestRandomBinaryCodec.java      |   13 +-
 .../spatial3d/geom/TestRandomGeoPolygon.java       |  172 +-
 .../geom/TestRandomGeoShapeRelationship.java       |  120 +-
 .../lucene/spatial3d/geom/TestRandomPlane.java     |   58 +-
 .../geom/TestSimpleGeoPolygonRelationships.java    | 1203 +++++----
 .../apache/lucene/spatial3d/geom/TestXYZSolid.java |   32 +-
 .../lucene/search/spell/CombineSuggestion.java     |   23 +-
 .../org/apache/lucene/search/spell/Dictionary.java |    9 +-
 .../lucene/search/spell/DirectSpellChecker.java    |  352 ++-
 .../search/spell/HighFrequencyDictionary.java      |   33 +-
 .../lucene/search/spell/JaroWinklerDistance.java   |   39 +-
 .../lucene/search/spell/LevenshteinDistance.java   |  161 +-
 .../lucene/search/spell/LuceneDictionary.java      |   14 +-
 .../search/spell/LuceneLevenshteinDistance.java    |   71 +-
 .../apache/lucene/search/spell/NGramDistance.java  |  132 +-
 .../lucene/search/spell/PlainTextDictionary.java   |   17 +-
 .../apache/lucene/search/spell/SpellChecker.java   |  292 ++-
 .../apache/lucene/search/spell/StringDistance.java |   14 +-
 .../apache/lucene/search/spell/SuggestMode.java    |   15 +-
 .../apache/lucene/search/spell/SuggestWord.java    |   30 +-
 .../spell/SuggestWordFrequencyComparator.java      |   12 +-
 .../lucene/search/spell/SuggestWordQueue.java      |   16 +-
 .../search/spell/SuggestWordScoreComparator.java   |   13 +-
 .../lucene/search/spell/WordBreakSpellChecker.java |  334 ++-
 .../apache/lucene/search/spell/package-info.java   |    5 +-
 .../apache/lucene/search/suggest/BitsProducer.java |    9 +-
 .../search/suggest/BufferedInputIterator.java      |    8 +-
 .../lucene/search/suggest/DocumentDictionary.java  |   99 +-
 .../suggest/DocumentValueSourceDictionary.java     |  108 +-
 .../lucene/search/suggest/FileDictionary.java      |   75 +-
 .../lucene/search/suggest/InMemorySorter.java      |    9 +-
 .../lucene/search/suggest/InputIterator.java       |   45 +-
 .../org/apache/lucene/search/suggest/Lookup.java   |  156 +-
 .../lucene/search/suggest/SortedInputIterator.java |  147 +-
 .../search/suggest/UnsortedInputIterator.java      |   19 +-
 .../suggest/analyzing/AnalyzingInfixSuggester.java |  542 ++--
 .../suggest/analyzing/AnalyzingSuggester.java      |  481 ++--
 .../suggest/analyzing/BlendedInfixSuggester.java   |  168 +-
 .../lucene/search/suggest/analyzing/FSTUtil.java   |   64 +-
 .../suggest/analyzing/FreeTextSuggester.java       |  459 ++--
 .../search/suggest/analyzing/FuzzySuggester.java   |  220 +-
 .../suggest/analyzing/SuggestStopFilter.java       |   23 +-
 .../analyzing/SuggestStopFilterFactory.java        |   58 +-
 .../search/suggest/analyzing/package-info.java     |    6 +-
 .../document/Completion50PostingsFormat.java       |   19 +-
 .../document/Completion84PostingsFormat.java       |   14 +-
 .../suggest/document/CompletionAnalyzer.java       |   92 +-
 .../suggest/document/CompletionFieldsConsumer.java |   73 +-
 .../suggest/document/CompletionFieldsProducer.java |   66 +-
 .../suggest/document/CompletionPostingsFormat.java |  130 +-
 .../search/suggest/document/CompletionQuery.java   |   57 +-
 .../search/suggest/document/CompletionScorer.java  |   40 +-
 .../search/suggest/document/CompletionTerms.java   |   26 +-
 .../suggest/document/CompletionTokenStream.java    |   40 +-
 .../search/suggest/document/CompletionWeight.java  |   35 +-
 .../suggest/document/CompletionsTermsReader.java   |   21 +-
 .../search/suggest/document/ContextQuery.java      |  149 +-
 .../suggest/document/ContextSuggestField.java      |   65 +-
 .../suggest/document/FuzzyCompletionQuery.java     |  138 +-
 .../search/suggest/document/NRTSuggester.java      |  312 +--
 .../suggest/document/NRTSuggesterBuilder.java      |   56 +-
 .../suggest/document/PrefixCompletionQuery.java    |   30 +-
 .../suggest/document/RegexCompletionQuery.java     |   53 +-
 .../search/suggest/document/SuggestField.java      |   58 +-
 .../suggest/document/SuggestIndexSearcher.java     |   33 +-
 .../document/SuggestScoreDocPriorityQueue.java     |   13 +-
 .../search/suggest/document/TopSuggestDocs.java    |   53 +-
 .../suggest/document/TopSuggestDocsCollector.java  |   87 +-
 .../search/suggest/document/package-info.java      |    4 +-
 .../lucene/search/suggest/fst/BytesRefSorter.java  |   26 +-
 .../search/suggest/fst/ExternalRefSorter.java      |   54 +-
 .../lucene/search/suggest/fst/FSTCompletion.java   |  178 +-
 .../search/suggest/fst/FSTCompletionBuilder.java   |  240 +-
 .../search/suggest/fst/FSTCompletionLookup.java    |  179 +-
 .../search/suggest/fst/WFSTCompletionLookup.java   |  135 +-
 .../lucene/search/suggest/fst/package-info.java    |    6 +-
 .../search/suggest/jaspell/JaspellLookup.java      |   45 +-
 .../suggest/jaspell/JaspellTernarySearchTrie.java  |  662 +++--
 .../search/suggest/jaspell/package-info.java       |    8 +-
 .../apache/lucene/search/suggest/package-info.java |    4 +-
 .../lucene/search/suggest/tst/TSTAutocomplete.java |   65 +-
 .../lucene/search/suggest/tst/TSTLookup.java       |  120 +-
 .../lucene/search/suggest/tst/TernaryTreeNode.java |   25 +-
 .../lucene/search/suggest/tst/package-info.java    |    6 +-
 .../search/spell/TestDirectSpellChecker.java       |  149 +-
 .../search/spell/TestJaroWinklerDistance.java      |    9 +-
 .../search/spell/TestLevenshteinDistance.java      |   23 +-
 .../lucene/search/spell/TestLuceneDictionary.java  |   56 +-
 .../lucene/search/spell/TestNGramDistance.java     |   76 +-
 .../search/spell/TestPlainTextDictionary.java      |    7 +-
 .../lucene/search/spell/TestSpellChecker.java      |  283 ++-
 .../search/spell/TestWordBreakSpellChecker.java    |  313 ++-
 .../org/apache/lucene/search/suggest/Average.java  |   70 +-
 .../search/suggest/DocumentDictionaryTest.java     |  148 +-
 .../suggest/DocumentValueSourceDictionaryTest.java |  136 +-
 .../lucene/search/suggest/FileDictionaryTest.java  |   74 +-
 .../org/apache/lucene/search/suggest/Input.java    |   28 +-
 .../lucene/search/suggest/InputArrayIterator.java  |   10 +-
 .../lucene/search/suggest/LookupBenchmarkTest.java |  183 +-
 .../lucene/search/suggest/PersistenceTest.java     |   48 +-
 .../lucene/search/suggest/TestInputIterator.java   |   71 +-
 .../analyzing/AnalyzingInfixSuggesterTest.java     |  715 ++++--
 .../suggest/analyzing/AnalyzingSuggesterTest.java  |  601 +++--
 .../analyzing/BlendedInfixSuggesterTest.java       |  298 ++-
 .../suggest/analyzing/FuzzySuggesterTest.java      |  626 +++--
 .../suggest/analyzing/TestFreeTextSuggester.java   |  370 ++-
 .../suggest/analyzing/TestSuggestStopFilter.java   |  137 +-
 .../analyzing/TestSuggestStopFilterFactory.java    |   62 +-
 .../search/suggest/document/TestContextQuery.java  |  191 +-
 .../suggest/document/TestContextSuggestField.java  |  127 +-
 .../suggest/document/TestFuzzyCompletionQuery.java |   41 +-
 .../document/TestPrefixCompletionQuery.java        |  196 +-
 .../suggest/document/TestRegexCompletionQuery.java |   50 +-
 .../search/suggest/document/TestSuggestField.java  |  300 ++-
 .../search/suggest/fst/BytesRefSortersTest.java    |   15 +-
 .../search/suggest/fst/FSTCompletionTest.java      |  157 +-
 .../search/suggest/fst/WFSTCompletionTest.java     |  109 +-
 .../analysis/BaseTokenStreamFactoryTestCase.java   |  120 +-
 .../lucene/analysis/BaseTokenStreamTestCase.java   |  826 +++++--
 .../lucene/analysis/CannedBinaryTokenStream.java   |   16 +-
 .../apache/lucene/analysis/CannedTokenStream.java  |   14 +-
 .../apache/lucene/analysis/CollationTestBase.java  |  108 +-
 .../apache/lucene/analysis/CrankyTokenFilter.java  |   14 +-
 .../lucene/analysis/LookaheadTokenFilter.java      |  117 +-
 .../org/apache/lucene/analysis/MockAnalyzer.java   |  102 +-
 .../apache/lucene/analysis/MockBytesAnalyzer.java  |   14 +-
 .../org/apache/lucene/analysis/MockCharFilter.java |   46 +-
 .../analysis/MockFixedLengthPayloadFilter.java     |    5 +-
 .../lucene/analysis/MockGraphTokenFilter.java      |   29 +-
 .../analysis/MockHoleInjectingTokenFilter.java     |   10 +-
 .../lucene/analysis/MockLowerCaseFilter.java       |    6 +-
 .../lucene/analysis/MockPayloadAnalyzer.java       |   22 +-
 .../analysis/MockRandomLookaheadTokenFilter.java   |   11 +-
 .../apache/lucene/analysis/MockReaderWrapper.java  |    9 +-
 .../lucene/analysis/MockSynonymAnalyzer.java       |    1 -
 .../apache/lucene/analysis/MockSynonymFilter.java  |    5 +-
 .../apache/lucene/analysis/MockTokenFilter.java    |   74 +-
 .../org/apache/lucene/analysis/MockTokenizer.java  |  166 +-
 .../analysis/MockUTF16TermAttributeImpl.java       |   12 +-
 .../analysis/MockVariableLengthPayloadFilter.java  |    5 +-
 .../lucene/analysis/SimplePayloadFilter.java       |    1 -
 .../src/java/org/apache/lucene/analysis/Token.java |  112 +-
 .../apache/lucene/analysis/TokenStreamToDot.java   |   27 +-
 .../lucene/analysis/ValidatingTokenFilter.java     |   72 +-
 .../apache/lucene/analysis/VocabularyAssert.java   |   34 +-
 .../apache/lucene/codecs/MissingOrdRemapper.java   |   21 +-
 .../lucene/codecs/asserting/AssertingCodec.java    |   66 +-
 .../codecs/asserting/AssertingDocValuesFormat.java |   75 +-
 .../codecs/asserting/AssertingLiveDocsFormat.java  |   15 +-
 .../codecs/asserting/AssertingNormsFormat.java     |   27 +-
 .../codecs/asserting/AssertingPointsFormat.java    |   26 +-
 .../codecs/asserting/AssertingPostingsFormat.java  |   46 +-
 .../asserting/AssertingStoredFieldsFormat.java     |   26 +-
 .../asserting/AssertingTermVectorsFormat.java      |   32 +-
 .../lucene/codecs/asserting/package-info.java      |    4 +-
 .../lucene/codecs/blockterms/LuceneFixedGap.java   |    8 +-
 .../blockterms/LuceneVarGapDocFreqInterval.java    |   17 +-
 .../blockterms/LuceneVarGapFixedInterval.java      |   13 +-
 .../bloom/TestBloomFilteredLucenePostings.java     |   35 +-
 .../codecs/cheapbastard/CheapBastardCodec.java     |    6 +-
 .../lucene/codecs/cheapbastard/package-info.java   |    6 +-
 .../codecs/compressing/CompressingCodec.java       |  141 +-
 .../DeflateWithPresetCompressingCodec.java         |   16 +-
 .../codecs/compressing/FastCompressingCodec.java   |   13 +-
 .../FastDecompressionCompressingCodec.java         |   13 +-
 .../HighCompressionCompressingCodec.java           |   13 +-
 .../compressing/LZ4WithPresetCompressingCodec.java |   16 +-
 .../compressing/dummy/DummyCompressingCodec.java   |  118 +-
 .../codecs/compressing/dummy/package-info.java     |    4 +-
 .../apache/lucene/codecs/cranky/CrankyCodec.java   |    8 +-
 .../lucene/codecs/cranky/CrankyCompoundFormat.java |   10 +-
 .../codecs/cranky/CrankyDocValuesFormat.java       |   26 +-
 .../codecs/cranky/CrankyFieldInfosFormat.java      |   15 +-
 .../lucene/codecs/cranky/CrankyLiveDocsFormat.java |   10 +-
 .../lucene/codecs/cranky/CrankyNormsFormat.java    |    9 +-
 .../lucene/codecs/cranky/CrankyPointsFormat.java   |   23 +-
 .../lucene/codecs/cranky/CrankyPostingsFormat.java |   17 +-
 .../codecs/cranky/CrankySegmentInfoFormat.java     |    9 +-
 .../codecs/cranky/CrankyStoredFieldsFormat.java    |   21 +-
 .../codecs/cranky/CrankyTermVectorsFormat.java     |   34 +-
 .../apache/lucene/codecs/cranky/package-info.java  |    4 +-
 .../mockrandom/MockRandomPostingsFormat.java       |  105 +-
 .../lucene/codecs/mockrandom/package-info.java     |    4 +-
 .../codecs/ramonly/RAMOnlyPostingsFormat.java      |  107 +-
 .../apache/lucene/codecs/ramonly/package-info.java |    4 +-
 .../codecs/uniformsplit/Rot13CypherTestUtil.java   |   11 +-
 .../UniformSplitRot13PostingsFormat.java           |   25 +-
 .../STUniformSplitRot13PostingsFormat.java         |   25 +-
 .../apache/lucene/geo/BaseGeoPointTestCase.java    |  869 ++++---
 .../org/apache/lucene/geo/BaseXYPointTestCase.java |  655 +++--
 .../java/org/apache/lucene/geo/EarthDebugger.java  |  124 +-
 .../java/org/apache/lucene/geo/GeoTestUtil.java    |  288 ++-
 .../java/org/apache/lucene/geo/ShapeTestUtil.java  |  107 +-
 .../apache/lucene/index/AlcoholicMergePolicy.java  |   51 +-
 .../lucene/index/AllDeletedFilterReader.java       |    6 +-
 .../lucene/index/AssertingDirectoryReader.java     |    6 +-
 .../apache/lucene/index/AssertingLeafReader.java   |  224 +-
 .../lucene/index/BaseCompoundFormatTestCase.java   |  413 ++--
 .../BaseCompressingDocValuesFormatTestCase.java    |    4 +-
 .../lucene/index/BaseDocValuesFormatTestCase.java  |  989 ++++----
 .../lucene/index/BaseFieldInfoFormatTestCase.java  |  246 +-
 .../lucene/index/BaseIndexFileFormatTestCase.java  |  563 +++--
 .../lucene/index/BaseLiveDocsFormatTestCase.java   |   50 +-
 .../lucene/index/BaseMergePolicyTestCase.java      |  375 +--
 .../lucene/index/BaseNormsFormatTestCase.java      |  505 ++--
 .../lucene/index/BasePointsFormatTestCase.java     |  569 +++--
 .../lucene/index/BasePostingsFormatTestCase.java   |  670 ++---
 .../index/BaseSegmentInfoFormatTestCase.java       |  473 ++--
 .../index/BaseStoredFieldsFormatTestCase.java      |  238 +-
 .../index/BaseTermVectorsFormatTestCase.java       |  406 +--
 .../apache/lucene/index/BaseTestCheckIndex.java    |   44 +-
 .../java/org/apache/lucene/index/DocHelper.java    |  187 +-
 .../apache/lucene/index/FieldFilterLeafReader.java |   90 +-
 .../org/apache/lucene/index/ForceMergePolicy.java  |   10 +-
 .../lucene/index/IndexWriterMaxDocsChanger.java    |   16 +-
 .../apache/lucene/index/MergingCodecReader.java    |   41 +-
 .../index/MergingDirectoryReaderWrapper.java       |   22 +-
 .../lucene/index/MismatchedDirectoryReader.java    |    9 +-
 .../apache/lucene/index/MismatchedLeafReader.java  |   59 +-
 .../apache/lucene/index/MockRandomMergePolicy.java |  102 +-
 .../lucene/index/OwnCacheKeyMultiReader.java       |   35 +-
 .../org/apache/lucene/index/PerThreadPKLookup.java |   33 +-
 .../apache/lucene/index/PointsStackTracker.java    |   34 +-
 .../java/org/apache/lucene/index/RandomCodec.java  |  224 +-
 .../org/apache/lucene/index/RandomIndexWriter.java |  234 +-
 .../apache/lucene/index/RandomPostingsTester.java  |  697 ++++--
 .../ThreadedIndexingAndSearchingTestCase.java      |  680 ++---
 .../org/apache/lucene/mockfile/DisableFsyncFS.java |   25 +-
 .../java/org/apache/lucene/mockfile/ExtrasFS.java  |   43 +-
 .../mockfile/FilterAsynchronousFileChannel.java    |   40 +-
 .../lucene/mockfile/FilterDirectoryStream.java     |   31 +-
 .../apache/lucene/mockfile/FilterFileChannel.java  |   25 +-
 .../apache/lucene/mockfile/FilterFileStore.java    |   26 +-
 .../apache/lucene/mockfile/FilterFileSystem.java   |   39 +-
 .../lucene/mockfile/FilterFileSystemProvider.java  |  114 +-
 .../apache/lucene/mockfile/FilterInputStream2.java |   37 +-
 .../lucene/mockfile/FilterOutputStream2.java       |   39 +-
 .../org/apache/lucene/mockfile/FilterPath.java     |   72 +-
 .../lucene/mockfile/FilterSeekableByteChannel.java |   25 +-
 .../org/apache/lucene/mockfile/HandleLimitFS.java  |   11 +-
 .../apache/lucene/mockfile/HandleTrackingFS.java   |  413 ++--
 .../java/org/apache/lucene/mockfile/LeakFS.java    |   16 +-
 .../lucene/mockfile/MockFileSystemTestCase.java    |   22 +-
 .../java/org/apache/lucene/mockfile/ShuffleFS.java |   23 +-
 .../java/org/apache/lucene/mockfile/VerboseFS.java |   54 +-
 .../apache/lucene/mockfile/VirusCheckingFS.java    |   25 +-
 .../java/org/apache/lucene/mockfile/WindowsFS.java |   53 +-
 .../org/apache/lucene/mockfile/package-info.java   |   13 +-
 .../apache/lucene/search/AssertingBulkScorer.java  |   11 +-
 .../apache/lucene/search/AssertingCollector.java   |   14 +-
 .../lucene/search/AssertingIndexSearcher.java      |   24 +-
 .../lucene/search/AssertingLeafCollector.java      |    4 +-
 .../org/apache/lucene/search/AssertingMatches.java |    5 +-
 .../lucene/search/AssertingMatchesIterator.java    |    9 +-
 .../org/apache/lucene/search/AssertingQuery.java   |   11 +-
 .../apache/lucene/search/AssertingScorable.java    |   20 +-
 .../org/apache/lucene/search/AssertingScorer.java  |  116 +-
 .../org/apache/lucene/search/AssertingWeight.java  |   14 +-
 .../lucene/search/BaseExplanationTestCase.java     |   91 +-
 .../lucene/search/BaseRangeFieldQueryTestCase.java |  133 +-
 .../lucene/search/BlockScoreQueryWrapper.java      |    9 +-
 .../lucene/search/BulkScorerWrapperScorer.java     |   38 +-
 .../java/org/apache/lucene/search/CheckHits.java   |  397 +--
 .../java/org/apache/lucene/search/QueryUtils.java  |  636 +++--
 .../lucene/search/RandomApproximationQuery.java    |   24 +-
 .../apache/lucene/search/ScorerIndexSearcher.java  |   31 +-
 .../lucene/search/SearchEquivalenceTestBase.java   |  106 +-
 .../lucene/search/ShardSearchingTestBase.java      |  148 +-
 .../search/similarities/AssertingSimilarity.java   |   15 +-
 .../similarities/BaseSimilarityTestCase.java       |  171 +-
 .../search/similarities/RandomSimilarity.java      |   37 +-
 .../lucene/search/spans/AssertingSpanQuery.java    |    9 +-
 .../lucene/search/spans/AssertingSpanWeight.java   |   10 +-
 .../apache/lucene/search/spans/AssertingSpans.java |  129 +-
 .../apache/lucene/search/spans/SpanTestUtil.java   |  106 +-
 .../apache/lucene/store/BaseDirectoryTestCase.java |  404 +--
 .../apache/lucene/store/BaseDirectoryWrapper.java  |   18 +-
 .../lucene/store/BaseLockFactoryTestCase.java      |  150 +-
 .../apache/lucene/store/CorruptingIndexOutput.java |   21 +-
 .../apache/lucene/store/MockDirectoryWrapper.java  |  632 ++---
 .../apache/lucene/store/MockIndexInputWrapper.java |   30 +-
 .../lucene/store/MockIndexOutputWrapper.java       |   43 +-
 .../apache/lucene/store/RawDirectoryWrapper.java   |   14 +-
 .../store/SlowClosingMockIndexInputWrapper.java    |   14 +-
 .../store/SlowOpeningMockIndexInputWrapper.java    |   13 +-
 .../lucene/util/AbstractBeforeAfterRule.java       |   11 +-
 .../org/apache/lucene/util/BaseBitSetTestCase.java |   16 +-
 .../apache/lucene/util/BaseDocIdSetTestCase.java   |   15 +-
 .../org/apache/lucene/util/CloseableDirectory.java |   10 +-
 .../src/java/org/apache/lucene/util/English.java   |   26 +-
 .../lucene/util/FailOnNonBulkMergesInfoStream.java |    5 +-
 .../java/org/apache/lucene/util/FailureMarker.java |    5 +-
 .../java/org/apache/lucene/util/LineFileDocs.java  |   64 +-
 .../lucene/util/LuceneJUnit3MethodProvider.java    |   21 +-
 .../org/apache/lucene/util/LuceneTestCase.java     | 1936 ++++++++-------
 .../org/apache/lucene/util/NullInfoStream.java     |   10 +-
 .../lucene/util/QuickPatchThreadsFilter.java       |   11 +-
 .../org/apache/lucene/util/RamUsageTester.java     |  276 ++-
 .../org/apache/lucene/util/RemoveUponClose.java    |   13 +-
 .../src/java/org/apache/lucene/util/Rethrow.java   |   16 +-
 .../lucene/util/RunListenerPrintReproduceInfo.java |   93 +-
 .../lucene/util/TestRuleAssertionsRequired.java    |    6 +-
 .../org/apache/lucene/util/TestRuleDelegate.java   |    5 +-
 .../util/TestRuleIgnoreAfterMaxFailures.java       |   34 +-
 .../lucene/util/TestRuleIgnoreTestSuites.java      |   37 +-
 .../apache/lucene/util/TestRuleLimitSysouts.java   |  169 +-
 .../apache/lucene/util/TestRuleMarkFailure.java    |   28 +-
 .../util/TestRuleRestoreSystemProperties.java      |   26 +-
 .../util/TestRuleSetupAndRestoreClassEnv.java      |  173 +-
 .../util/TestRuleSetupAndRestoreInstanceEnv.java   |    4 +-
 .../lucene/util/TestRuleSetupTeardownChained.java  |   23 +-
 .../apache/lucene/util/TestRuleStoreClassName.java |   13 +-
 .../lucene/util/TestRuleTemporaryFilesCleanup.java |  119 +-
 .../lucene/util/TestRuleThreadAndTestName.java     |   13 +-
 .../apache/lucene/util/TestSecurityManager.java    |   72 +-
 .../src/java/org/apache/lucene/util/TestUtil.java  | 1119 ++++++---
 .../apache/lucene/util/ThrottledIndexOutput.java   |   45 +-
 .../src/java/org/apache/lucene/util/TimeUnits.java |    2 +-
 .../lucene/util/automaton/AutomatonTestUtil.java   |  182 +-
 .../java/org/apache/lucene/util/fst/FSTTester.java |  297 ++-
 .../lucene/analysis/TestLookaheadTokenFilter.java  |   94 +-
 .../apache/lucene/analysis/TestMockAnalyzer.java   |  307 ++-
 .../apache/lucene/analysis/TestMockCharFilter.java |   54 +-
 .../lucene/analysis/TestMockSynonymFilter.java     |  199 +-
 .../org/apache/lucene/analysis/TestPosition.java   |    5 +-
 .../lucene/analysis/TrivialLookaheadFilter.java    |   20 +-
 .../asserting/TestAssertingDocValuesFormat.java    |    2 +-
 .../codecs/asserting/TestAssertingNormsFormat.java |    4 +-
 .../asserting/TestAssertingPostingsFormat.java     |    2 +-
 .../asserting/TestAssertingStoredFieldsFormat.java |    4 +-
 .../asserting/TestAssertingTermVectorsFormat.java  |    2 +-
 .../TestCompressingStoredFieldsFormat.java         |   75 +-
 .../TestCompressingTermVectorsFormat.java          |   20 +-
 .../lucene/index/TestAssertingLeafReader.java      |   20 +-
 .../apache/lucene/index/TestForceMergePolicy.java  |    3 +-
 .../apache/lucene/mockfile/TestDisableFsyncFS.java |   16 +-
 .../org/apache/lucene/mockfile/TestExtrasFS.java   |   18 +-
 .../apache/lucene/mockfile/TestHandleLimitFS.java  |   21 +-
 .../lucene/mockfile/TestHandleTrackingFS.java      |   52 +-
 .../org/apache/lucene/mockfile/TestLeakFS.java     |   31 +-
 .../org/apache/lucene/mockfile/TestShuffleFS.java  |   55 +-
 .../org/apache/lucene/mockfile/TestVerboseFS.java  |   72 +-
 .../lucene/mockfile/TestVirusCheckingFS.java       |   11 +-
 .../org/apache/lucene/mockfile/TestWindowsFS.java  |   88 +-
 .../lucene/search/TestBaseExplanationTestCase.java |   66 +-
 .../lucene/store/TestMockDirectoryWrapper.java     |   35 +-
 .../src/test/org/apache/lucene/util/SorePoint.java |    7 +-
 .../lucene/util/TestBeforeAfterOverrides.java      |   18 +-
 .../org/apache/lucene/util/TestCodecReported.java  |    5 +-
 .../util/TestExceptionInBeforeClassHooks.java      |   83 +-
 .../org/apache/lucene/util/TestExpectThrows.java   |  128 +-
 .../lucene/util/TestFailIfDirectoryNotClosed.java  |   10 +-
 .../lucene/util/TestFailIfUnreferencedFiles.java   |   15 +-
 .../org/apache/lucene/util/TestGroupFiltering.java |   12 +-
 .../org/apache/lucene/util/TestJUnitRuleOrder.java |   40 +-
 .../test/org/apache/lucene/util/TestJvmInfo.java   |   28 +-
 .../apache/lucene/util/TestMaxFailuresRule.java    |  137 +-
 .../org/apache/lucene/util/TestPleaseFail.java     |    5 +-
 .../util/TestRamUsageTesterOnWildAnimals.java      |    8 +-
 .../apache/lucene/util/TestReproduceMessage.java   |  122 +-
 .../util/TestReproduceMessageWithRepeated.java     |   10 +-
 .../util/TestRunWithRestrictedPermissions.java     |   17 +-
 .../apache/lucene/util/TestSeedFromUncaught.java   |   22 +-
 .../lucene/util/TestSetupTeardownChaining.java     |   33 +-
 .../org/apache/lucene/util/TestSysoutsLimits.java  |   39 +-
 .../lucene/util/TestWorstCaseTestBehavior.java     |   44 +-
 .../org/apache/lucene/util/WithNestedTests.java    |  154 +-
 1285 files changed, 62334 insertions(+), 49254 deletions(-)

diff --git a/gradle/generation/javacc.gradle b/gradle/generation/javacc.gradle
index 339eada..4a3dced 100644
--- a/gradle/generation/javacc.gradle
+++ b/gradle/generation/javacc.gradle
@@ -227,6 +227,22 @@ configure(project(":lucene:queryparser")) {
     }
   }
 
+  task regenerate() {
+    description "Regenerate any generated sources"
+    group "generation"
+
+    // Run regeneration tasks.
+    dependsOn javaccParserClassic, javaccParserSurround, javaccParserFlexible
+
+    // Clean up and reformat the generated sources after generation.
+    dependsOn "tidy"
+  }
+
+  // Make sure tidy runs after generation, if they're defined.
+  tasks.matching { it.name == "tidy" }.configureEach {
+    mustRunAfter javaccParserClassic, javaccParserSurround, javaccParserFlexible
+  }
+
   task javacc() {
     description "Regenerate query parsers (javacc syntax definitions)."
     group "generation"
@@ -244,7 +260,6 @@ configure(project(":solr:core")) {
 
     javaccFile = file('src/java/org/apache/solr/parser/QueryParser.jj')
 
-
     afterGenerate << commonCleanups
     afterGenerate << { FileTree generatedFiles ->
       generatedFiles.matching { include "QueryParser.java" }.each { file ->
diff --git a/gradle/validation/spotless.gradle b/gradle/validation/spotless.gradle
index 3dc3deb..148ec5b 100644
--- a/gradle/validation/spotless.gradle
+++ b/gradle/validation/spotless.gradle
@@ -16,116 +16,89 @@
  */
 
 /*
- * LUCENE-9564: This adds automatic (and enforced) code formatting.
+ * LUCENE-9564: This adds automatic (and enforced) code formatting using
+ * spotless and Google Java Format.
  */
 
 def resources = scriptResources(buildscript)
 
-allprojects { prj ->
+configure(project(":lucene").subprojects) { prj ->
   plugins.withType(JavaPlugin) {
     prj.apply plugin: 'com.diffplug.spotless'
 
     spotless {
       java {
-        // TODO: work out how to have multiple different header files (we have
-        // classes in the codebase that have original headers).
+        // TODO: Work out how to support multiple different header files (we have
+        // classes in the codebase that have original headers). We currently use
+        // Apache RAT to enforce headers so this is of lesser priority.
+        //
         // licenseHeaderFile file("${resources}/asl-header.txt"), '^(\\s*package)'
 
         lineEndings 'UNIX'
         endWithNewline()
         googleJavaFormat('1.9')
 
+        // Apply to all Java sources
+        target "src/**/*.java"
+
+        // Exclude certain files (generated ones, mostly).
         switch (project.path) {
-          // These modules are complete - all sources scanned.
           case ":lucene:core":
-            target "src/java/**/*.java",
-                   "src/test/**/*.java"
-            targetExclude "**/resources/**", "**/StandardTokenizerImpl.java"
-            break
-
-          case ":lucene:highlighter":
-            target "src/java/**/*.java",
-                   "src/test/**/*.java"
-            targetExclude "**/resources/**"
-            break
-
-          case ":lucene:queries":
-            target "src/java/**/*.java",
-                   "src/test/**/*.java"
-            targetExclude "**/resources/**"
+            targetExclude "**/StandardTokenizerImpl.java"
             break
 
           case ":lucene:analysis:common":
-            target "src/**/*.java"
-            targetExclude "**/resources/**",
-                "**/HTMLStripCharFilter.java",
+            targetExclude "**/HTMLStripCharFilter.java",
                 "**/UAX29URLEmailTokenizerImpl.java",
                 "**/tartarus/**"
             break
 
-          case ":lucene:demo":
-          case ":lucene:analysis:morfologik":
-          case ":lucene:analysis:icu":
-          case ":lucene:analysis:kuromoji":
-          case ":lucene:memory":
-          case ":lucene:benchmark":
-          case ":lucene:analysis:nori":
-          case ":lucene:analysis:opennlp":
-          case ":lucene:analysis:phonetic":
-          case ":lucene:analysis:smartcn":
-          case ":lucene:analysis:stempel":
-          case ":lucene:classification":
-          case ":lucene:backward-codecs":
-          case ":lucene:codecs":
-          case ":lucene:join":
-            target "src/**/*.java"
-            targetExclude "**/resources/**"
+          case ":lucene:test-framework":
+            targetExclude "**/EmojiTokenizationTestUnicode_11_0.java",
+                "**/WordBreakTestUnicode_9_0_0.java"
             break
 
           case ":lucene:expressions":
-            target "src/**/*.java"
-            targetExclude "**/resources/**", "**/JavascriptLexer.java", "**/JavascriptParser.java",
+            targetExclude "**/JavascriptLexer.java",
+                "**/JavascriptParser.java",
                 "**/JavascriptVisitor.java"
             break
 
-            // Partially complete.
-
-          case ":lucene:facet":
-            target "src/**/*.java"
-            targetExclude "**/taxonomy.8.6.3-cfs.zip"
-            break
-
-          // All others - disable reformatting/ checks for now.
-          case ":lucene:grouping":
-          case ":lucene:luke":
-          case ":lucene:misc":
-          case ":lucene:monitor":
           case ":lucene:queryparser":
-          case ":lucene:replicator":
-          case ":lucene:sandbox":
-          case ":lucene:spatial3d":
-          case ":lucene:spatial-extras":
-          case ":lucene:suggest":
-          case ":lucene:test-framework":
-
-          default:
-            target 'non-existing/**'
+            targetExclude "**/classic/ParseException.java",
+              "**/classic/QueryParser.java",
+              "**/classic/QueryParserConstants.java",
+              "**/classic/QueryParserTokenManager.java",
+              "**/classic/Token.java",
+              "**/classic/TokenMgrError.java",
+              "**/standard/parser/ParseException.java",
+              "**/standard/parser/StandardSyntaxParser.java",
+              "**/standard/parser/StandardSyntaxParserConstants.java",
+              "**/standard/parser/StandardSyntaxParserTokenManager.java",
+              "**/standard/parser/Token.java",
+              "**/standard/parser/TokenMgrError.java",
+              "**/surround/parser/ParseException.java",
+              "**/surround/parser/QueryParser.java",
+              "**/surround/parser/QueryParserConstants.java",
+              "**/surround/parser/QueryParserTokenManager.java",
+              "**/surround/parser/Token.java",
+              "**/surround/parser/TokenMgrError.java"
             break
         }
       }
     }
 
+    // Workaround for an odd problem in spotless where it fails because
+    // of a missing folder.
     spotlessJava {
       doFirst {
         project.mkdir("${buildDir}/spotless/spotlessJava")
       }
     }
   }
-}
 
-// Add an alias to 'spotlessApply' simply called 'tidy' and add
-// spotlessCheck to check.
-allprojects { prj ->
+  // Add an alias to 'spotlessApply' simply called 'tidy' and wire up
+  // spotlessCheck to convention's check.
   task tidy() {
     description "Applies formatters and cleanups to sources."
     group "verification"
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 742aed2..bb5bdb3 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -191,6 +191,10 @@ Bug fixes
 
 Other
 
+* LUCENE-9570, LUCENE-9564: Apply google java format and enforce it on source Java files.
+  Review diffs and correct automatic formatting oddities. (Erick Erickson,
+  Bruno Roustant, Dawid Weiss)
+
 * LUCENE-9631: Properly override slice() on subclasses of OffsetRange. (Dawid Weiss)
 
 * LUCENE-9312: Allow gradle builds against arbitrary JVMs. (Tomoko Uchida, Dawid Weiss)
diff --git a/lucene/core/src/java/org/apache/lucene/search/HitQueue.java b/lucene/core/src/java/org/apache/lucene/search/HitQueue.java
index 9998452..dc2a7e5 100644
--- a/lucene/core/src/java/org/apache/lucene/search/HitQueue.java
+++ b/lucene/core/src/java/org/apache/lucene/search/HitQueue.java
@@ -76,7 +76,10 @@ public final class HitQueue extends PriorityQueue<ScoreDoc> {
 
   @Override
   protected final boolean lessThan(ScoreDoc hitA, ScoreDoc hitB) {
-    if (hitA.score == hitB.score) return hitA.doc > hitB.doc;
-    else return hitA.score < hitB.score;
+    if (hitA.score == hitB.score) {
+      return hitA.doc > hitB.doc;
+    } else {
+      return hitA.score < hitB.score;
+    }
   }
 }
diff --git a/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java b/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
index a9835a0..39a67ff 100644
--- a/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
+++ b/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
@@ -177,9 +177,8 @@ public class NIOFSDirectory extends FSDirectory {
           b.limit(b.position() + toRead);
           assert b.remaining() == toRead;
           final int i = channel.read(b, pos);
-          if (i
-              < 0) { // be defensive here, even though we checked before hand, something could have
-            // changed
+          if (i < 0) {
+            // be defensive here, even though we checked before hand, something could have changed
             throw new EOFException(
                 "read past EOF: "
                     + this
@@ -191,7 +190,8 @@ public class NIOFSDirectory extends FSDirectory {
                     + end);
           }
           assert i > 0
-              : "FileChannel.read with non zero-length bb.remaining() must always read at least one byte (FileChannel is in blocking mode, see spec of ReadableByteChannel)";
+              : "FileChannel.read with non zero-length bb.remaining() must always read at least "
+                  + "one byte (FileChannel is in blocking mode, see spec of ReadableByteChannel)";
           pos += i;
           readLength -= i;
         }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupHeadsCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupHeadsCollector.java
index f680385..56a2d3d 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupHeadsCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupHeadsCollector.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.FieldComparator;
@@ -33,14 +32,14 @@ import org.apache.lucene.search.SortField;
 import org.apache.lucene.util.FixedBitSet;
 
 /**
- * This collector specializes in collecting the most relevant document (group head) for each
- * group that matches the query.
+ * This collector specializes in collecting the most relevant document (group head) for each group
+ * that matches the query.
  *
- * Clients should create new collectors by calling {@link #newCollector(GroupSelector, Sort)}
+ * <p>Clients should create new collectors by calling {@link #newCollector(GroupSelector, Sort)}
  *
  * @lucene.experimental
  */
-@SuppressWarnings({"unchecked","rawtypes"})
+@SuppressWarnings({"unchecked", "rawtypes"})
 public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
 
   private final GroupSelector<T> groupSelector;
@@ -56,13 +55,15 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
 
   /**
    * Create a new AllGroupHeadsCollector based on the type of within-group Sort required
+   *
    * @param selector a GroupSelector to define the groups
-   * @param sort     the within-group sort to use to choose the group head document
-   * @param <T>      the group value type
+   * @param sort the within-group sort to use to choose the group head document
+   * @param <T> the group value type
    */
   public static <T> AllGroupHeadsCollector<T> newCollector(GroupSelector<T> selector, Sort sort) {
-    if (sort.equals(Sort.RELEVANCE))
+    if (sort.equals(Sort.RELEVANCE)) {
       return new ScoringGroupHeadsCollector<>(selector, sort);
+    }
     return new SortingGroupHeadsCollector<>(selector, sort);
   }
 
@@ -93,7 +94,8 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
   }
 
   /**
-   * @return an int array containing all group heads. The size of the array is equal to number of collected unique groups.
+   * @return an int array containing all group heads. The size of the array is equal to number of
+   *     collected unique groups.
    */
   public int[] retrieveGroupHeads() {
     Collection<? extends GroupHead<T>> groupHeads = getCollectedGroupHeads();
@@ -107,16 +109,13 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
     return docHeads;
   }
 
-  /**
-   * @return the number of group heads found for a query.
-   */
+  /** @return the number of group heads found for a query. */
   public int groupHeadsSize() {
     return getCollectedGroupHeads().size();
   }
 
   /**
-   * Returns the collected group heads.
-   * Subsequent calls should return the same group heads.
+   * Returns the collected group heads. Subsequent calls should return the same group heads.
    *
    * @return the collected group heads
    */
@@ -179,49 +178,46 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
   /**
    * Create a new GroupHead for the given group value, initialized with a doc, context and scorer
    */
-  protected abstract GroupHead<T> newGroupHead(int doc, T value, LeafReaderContext context, Scorable scorer) throws IOException;
+  protected abstract GroupHead<T> newGroupHead(
+      int doc, T value, LeafReaderContext context, Scorable scorer) throws IOException;
 
   /**
-   * Represents a group head. A group head is the most relevant document for a particular group.
-   * The relevancy is based is usually based on the sort.
+   * Represents a group head. A group head is the most relevant document for a particular group. The
+   * relevancy is based is usually based on the sort.
    *
-   * The group head contains a group value with its associated most relevant document id.
+   * <p>The group head contains a group value with its associated most relevant document id.
    */
-  public static abstract class GroupHead<T> {
+  public abstract static class GroupHead<T> {
 
     public final T groupValue;
     public int doc;
 
     protected int docBase;
 
-    /**
-     * Create a new GroupHead for the given value
-     */
+    /** Create a new GroupHead for the given value */
     protected GroupHead(T groupValue, int doc, int docBase) {
       this.groupValue = groupValue;
       this.doc = doc + docBase;
       this.docBase = docBase;
     }
 
-    /**
-     * Called for each segment
-     */
+    /** Called for each segment */
     protected void setNextReader(LeafReaderContext ctx) throws IOException {
       this.docBase = ctx.docBase;
     }
 
-    /**
-     * Called for each segment
-     */
+    /** Called for each segment */
     protected abstract void setScorer(Scorable scorer) throws IOException;
 
     /**
-     * Compares the specified document for a specified comparator against the current most relevant document.
+     * Compares the specified document for a specified comparator against the current most relevant
+     * document.
      *
      * @param compIDX The comparator index of the specified comparator.
      * @param doc The specified document.
-     * @return -1 if the specified document wasn't competitive against the current most relevant document, 1 if the
-     *         specified document was competitive against the current most relevant document. Otherwise 0.
+     * @return -1 if the specified document wasn't competitive against the current most relevant
+     *     document, 1 if the specified document was competitive against the current most relevant
+     *     document. Otherwise 0.
      * @throws IOException If I/O related errors occur
      */
     protected abstract int compare(int compIDX, int doc) throws IOException;
@@ -233,12 +229,9 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
      * @throws IOException If I/O related errors occur
      */
     protected abstract void updateDocHead(int doc) throws IOException;
-
   }
 
-  /**
-   * General implementation using a {@link FieldComparator} to select the group head
-   */
+  /** General implementation using a {@link FieldComparator} to select the group head */
   private static class SortingGroupHeadsCollector<T> extends AllGroupHeadsCollector<T> {
 
     protected SortingGroupHeadsCollector(GroupSelector<T> selector, Sort sort) {
@@ -246,7 +239,8 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
     }
 
     @Override
-    protected GroupHead<T> newGroupHead(int doc, T value, LeafReaderContext ctx, Scorable scorer) throws IOException {
+    protected GroupHead<T> newGroupHead(int doc, T value, LeafReaderContext ctx, Scorable scorer)
+        throws IOException {
       return new SortingGroupHead<>(sort, value, doc, ctx, scorer);
     }
   }
@@ -256,7 +250,9 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
     final FieldComparator[] comparators;
     final LeafFieldComparator[] leafComparators;
 
-    protected SortingGroupHead(Sort sort, T groupValue, int doc, LeafReaderContext context, Scorable scorer) throws IOException {
+    protected SortingGroupHead(
+        Sort sort, T groupValue, int doc, LeafReaderContext context, Scorable scorer)
+        throws IOException {
       super(groupValue, doc, context.docBase);
       final SortField[] sortFields = sort.getSort();
       comparators = new FieldComparator[sortFields.length];
@@ -300,9 +296,7 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
     }
   }
 
-  /**
-   * Specialized implementation for sorting by score
-   */
+  /** Specialized implementation for sorting by score */
   private static class ScoringGroupHeadsCollector<T> extends AllGroupHeadsCollector<T> {
 
     protected ScoringGroupHeadsCollector(GroupSelector<T> selector, Sort sort) {
@@ -310,7 +304,8 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
     }
 
     @Override
-    protected GroupHead<T> newGroupHead(int doc, T value, LeafReaderContext context, Scorable scorer) throws IOException {
+    protected GroupHead<T> newGroupHead(
+        int doc, T value, LeafReaderContext context, Scorable scorer) throws IOException {
       return new ScoringGroupHead<>(scorer, value, doc, context.docBase);
     }
   }
@@ -320,7 +315,8 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
     private Scorable scorer;
     private float topScore;
 
-    protected ScoringGroupHead(Scorable scorer, T groupValue, int doc, int docBase) throws IOException {
+    protected ScoringGroupHead(Scorable scorer, T groupValue, int doc, int docBase)
+        throws IOException {
       super(groupValue, doc, docBase);
       assert scorer.docID() == doc;
       this.scorer = scorer;
@@ -338,8 +334,9 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
       assert compIDX == 0;
       float score = scorer.score();
       int c = Float.compare(score, topScore);
-      if (c > 0)
+      if (c > 0) {
         topScore = score;
+      }
       return c;
     }
 
@@ -348,5 +345,4 @@ public abstract class AllGroupHeadsCollector<T> extends SimpleCollector {
       this.doc = doc + docBase;
     }
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupsCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupsCollector.java
index 30ea490..41d6a99 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupsCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/AllGroupsCollector.java
@@ -20,17 +20,14 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Scorable;
 import org.apache.lucene.search.ScoreMode;
 import org.apache.lucene.search.SimpleCollector;
 
 /**
- * A collector that collects all groups that match the
- * query. Only the group value is collected, and the order
- * is undefined.  This collector does not determine
- * the most relevant document of a group.
+ * A collector that collects all groups that match the query. Only the group value is collected, and
+ * the order is undefined. This collector does not determine the most relevant document of a group.
  *
  * @lucene.experimental
  */
@@ -42,6 +39,7 @@ public class AllGroupsCollector<T> extends SimpleCollector {
 
   /**
    * Create a new AllGroupsCollector
+   *
    * @param groupSelector the GroupSelector to determine groups
    */
   public AllGroupsCollector(GroupSelector<T> groupSelector) {
@@ -49,8 +47,10 @@ public class AllGroupsCollector<T> extends SimpleCollector {
   }
 
   /**
-   * Returns the total number of groups for the executed search.
-   * This is a convenience method. The following code snippet has the same effect: <pre>getGroups().size()</pre>
+   * Returns the total number of groups for the executed search. This is a convenience method. The
+   * following code snippet has the same effect:
+   *
+   * <pre>getGroups().size()</pre>
    *
    * @return The total number of groups for the executed search
    */
@@ -60,8 +60,8 @@ public class AllGroupsCollector<T> extends SimpleCollector {
 
   /**
    * Returns the group values
-   * <p>
-   * This is an unordered collections of group values.
+   *
+   * <p>This is an unordered collections of group values.
    *
    * @return the group values
    */
@@ -80,8 +80,9 @@ public class AllGroupsCollector<T> extends SimpleCollector {
   @Override
   public void collect(int doc) throws IOException {
     groupSelector.advanceTo(doc);
-    if (groups.contains(groupSelector.currentValue()))
+    if (groups.contains(groupSelector.currentValue())) {
       return;
+    }
     groups.add(groupSelector.copyValue());
   }
 
@@ -89,4 +90,4 @@ public class AllGroupsCollector<T> extends SimpleCollector {
   public ScoreMode scoreMode() {
     return ScoreMode.COMPLETE_NO_SCORES; // the result is unaffected by relevancy
   }
-}
\ No newline at end of file
+}
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
index bbeb2ee..226aca0 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.search.grouping;
 
 import java.io.IOException;
-
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.DocIdSetIterator;
@@ -40,29 +39,22 @@ import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.PriorityQueue;
 
 // TODO: this sentence is too long for the class summary.
-/** BlockGroupingCollector performs grouping with a
- *  single pass collector, as long as you are grouping by a
- *  doc block field, ie all documents sharing a given group
- *  value were indexed as a doc block using the atomic
- *  {@link IndexWriter#addDocuments IndexWriter.addDocuments()} 
- *  or {@link IndexWriter#updateDocuments IndexWriter.updateDocuments()} 
- *  API.
+/**
+ * BlockGroupingCollector performs grouping with a single pass collector, as long as you are
+ * grouping by a doc block field, ie all documents sharing a given group value were indexed as a doc
+ * block using the atomic {@link IndexWriter#addDocuments IndexWriter.addDocuments()} or {@link
+ * IndexWriter#updateDocuments IndexWriter.updateDocuments()} API.
  *
- *  <p>This results in faster performance (~25% faster QPS)
- *  than the two-pass grouping collectors, with the tradeoff
- *  being that the documents in each group must always be
- *  indexed as a block.  This collector also fills in
- *  TopGroups.totalGroupCount without requiring the separate
- *  {@link org.apache.lucene.search.grouping.AllGroupsCollector}.  However, this collector does
- *  not fill in the groupValue of each group; this field
- *  will always be null.
+ * <p>This results in faster performance (~25% faster QPS) than the two-pass grouping collectors,
+ * with the tradeoff being that the documents in each group must always be indexed as a block. This
+ * collector also fills in TopGroups.totalGroupCount without requiring the separate {@link
+ * org.apache.lucene.search.grouping.AllGroupsCollector}. However, this collector does not fill in
+ * the groupValue of each group; this field will always be null.
  *
- *  <p><b>NOTE</b>: this collector makes no effort to verify
- *  the docs were in fact indexed as a block, so it's up to
- *  you to ensure this was the case.
+ * <p><b>NOTE</b>: this collector makes no effort to verify the docs were in fact indexed as a
+ * block, so it's up to you to ensure this was the case.
  *
- *  <p>See {@link org.apache.lucene.search.grouping} for more
- *  details including a full code example.</p>
+ * <p>See {@link org.apache.lucene.search.grouping} for more details including a full code example.
  *
  * @lucene.experimental
  */
@@ -104,14 +96,14 @@ public class BlockGroupingCollector extends SimpleCollector {
 
   private static final class OneGroup {
     LeafReaderContext readerContext;
-    //int groupOrd;
+    // int groupOrd;
     int topGroupDoc;
     int[] docs;
     float[] scores;
     int count;
     int comparatorSlot;
   }
-  
+
   // Sorts by groupSort.  Not static -- uses comparators, reversed
   private final class GroupQueue extends PriorityQueue<OneGroup> {
 
@@ -122,13 +114,15 @@ public class BlockGroupingCollector extends SimpleCollector {
     @Override
     protected boolean lessThan(final OneGroup group1, final OneGroup group2) {
 
-      //System.out.println("    ltcheck");
+      // System.out.println("    ltcheck");
       assert group1 != group2;
       assert group1.comparatorSlot != group2.comparatorSlot;
 
       final int numComparators = comparators.length;
-      for (int compIDX=0;compIDX < numComparators; compIDX++) {
-        final int c = reversed[compIDX] * comparators[compIDX].compare(group1.comparatorSlot, group2.comparatorSlot);
+      for (int compIDX = 0; compIDX < numComparators; compIDX++) {
+        final int c =
+            reversed[compIDX]
+                * comparators[compIDX].compare(group1.comparatorSlot, group2.comparatorSlot);
         if (c != 0) {
           // Short circuit
           return c > 0;
@@ -144,7 +138,8 @@ public class BlockGroupingCollector extends SimpleCollector {
   // group is competitive we insert into the group queue
   private void processGroup() throws IOException {
     totalGroupCount++;
-    //System.out.println("    processGroup ord=" + lastGroupOrd + " competes=" + groupCompetes + " count=" + subDocUpto + " groupDoc=" + topGroupDoc);
+    // System.out.println("    processGroup ord=" + lastGroupOrd + " competes=" + groupCompetes + "
+    // count=" + subDocUpto + " groupDoc=" + topGroupDoc);
     if (groupCompetes) {
       if (!queueFull) {
         // Startup transient: always add a new OneGroup
@@ -158,20 +153,21 @@ public class BlockGroupingCollector extends SimpleCollector {
           pendingSubScores = new float[10];
         }
         og.readerContext = currentReaderContext;
-        //og.groupOrd = lastGroupOrd;
+        // og.groupOrd = lastGroupOrd;
         og.comparatorSlot = bottomSlot;
         final OneGroup bottomGroup = groupQueue.add(og);
-        //System.out.println("      ADD group=" + getGroupString(lastGroupOrd) + " newBottom=" + getGroupString(bottomGroup.groupOrd));
+        // System.out.println("      ADD group=" + getGroupString(lastGroupOrd) + " newBottom=" +
+        // getGroupString(bottomGroup.groupOrd));
         queueFull = groupQueue.size() == topNGroups;
         if (queueFull) {
           // Queue just became full; now set the real bottom
           // in the comparators:
           bottomSlot = bottomGroup.comparatorSlot;
-          //System.out.println("    set bottom=" + bottomSlot);
+          // System.out.println("    set bottom=" + bottomSlot);
           for (int i = 0; i < comparators.length; i++) {
             leafComparators[i].setBottom(bottomSlot);
           }
-          //System.out.println("     QUEUE FULL");
+          // System.out.println("     QUEUE FULL");
         } else {
           // Queue not full yet -- just advance bottomSlot:
           bottomSlot = groupQueue.size();
@@ -193,10 +189,10 @@ public class BlockGroupingCollector extends SimpleCollector {
           pendingSubScores = savScores;
         }
         og.readerContext = currentReaderContext;
-        //og.groupOrd = lastGroupOrd;
+        // og.groupOrd = lastGroupOrd;
         bottomSlot = groupQueue.updateTop().comparatorSlot;
 
-        //System.out.println("    set bottom=" + bottomSlot);
+        // System.out.println("    set bottom=" + bottomSlot);
         for (int i = 0; i < comparators.length; i++) {
           leafComparators[i].setBottom(bottomSlot);
         }
@@ -208,22 +204,17 @@ public class BlockGroupingCollector extends SimpleCollector {
   /**
    * Create the single pass collector.
    *
-   *  @param groupSort The {@link Sort} used to sort the
-   *    groups.  The top sorted document within each group
-   *    according to groupSort, determines how that group
-   *    sorts against other groups.  This must be non-null,
-   *    ie, if you want to groupSort by relevance use
-   *    Sort.RELEVANCE.
-   *  @param topNGroups How many top groups to keep.
-   *  @param needsScores true if the collected documents
-   *    require scores, either because relevance is included
-   *    in the withinGroupSort or because you plan to pass true
-   *    for either getSscores or getMaxScores to {@link
-   *    #getTopGroups}
-   *  @param lastDocPerGroup a {@link Weight} that marks the
-   *    last document in each group.
+   * @param groupSort The {@link Sort} used to sort the groups. The top sorted document within each
+   *     group according to groupSort, determines how that group sorts against other groups. This
+   *     must be non-null, ie, if you want to groupSort by relevance use Sort.RELEVANCE.
+   * @param topNGroups How many top groups to keep.
+   * @param needsScores true if the collected documents require scores, either because relevance is
+   *     included in the withinGroupSort or because you plan to pass true for either getSscores or
+   *     getMaxScores to {@link #getTopGroups}
+   * @param lastDocPerGroup a {@link Weight} that marks the last document in each group.
    */
-  public BlockGroupingCollector(Sort groupSort, int topNGroups, boolean needsScores, Weight lastDocPerGroup) {
+  public BlockGroupingCollector(
+      Sort groupSort, int topNGroups, boolean needsScores, Weight lastDocPerGroup) {
 
     if (topNGroups < 1) {
       throw new IllegalArgumentException("topNGroups must be >= 1 (got " + topNGroups + ")");
@@ -239,7 +230,7 @@ public class BlockGroupingCollector extends SimpleCollector {
     this.lastDocPerGroup = lastDocPerGroup;
 
     this.groupSort = groupSort;
-    
+
     this.topNGroups = topNGroups;
 
     final SortField[] sortFields = groupSort.getSort();
@@ -259,29 +250,26 @@ public class BlockGroupingCollector extends SimpleCollector {
   // typically they will be presented as a "single" result
   // in the UI?
 
-  /** Returns the grouped results.  Returns null if the
-   *  number of groups collected is &lt;= groupOffset.
+  /**
+   * Returns the grouped results. Returns null if the number of groups collected is &lt;=
+   * groupOffset.
    *
-   *  <p><b>NOTE</b>: This collector is unable to compute
-   *  the groupValue per group so it will always be null.
-   *  This is normally not a problem, as you can obtain the
-   *  value just like you obtain other values for each
-   *  matching document (eg, via stored fields, via
-   *  DocValues, etc.)
+   * <p><b>NOTE</b>: This collector is unable to compute the groupValue per group so it will always
+   * be null. This is normally not a problem, as you can obtain the value just like you obtain other
+   * values for each matching document (eg, via stored fields, via DocValues, etc.)
    *
-   *  @param withinGroupSort The {@link Sort} used to sort
-   *    documents within each group.
-   *  @param groupOffset Which group to start from
-   *  @param withinGroupOffset Which document to start from
-   *    within each group
-   *  @param maxDocsPerGroup How many top documents to keep
-   *     within each group.
+   * @param withinGroupSort The {@link Sort} used to sort documents within each group.
+   * @param groupOffset Which group to start from
+   * @param withinGroupOffset Which document to start from within each group
+   * @param maxDocsPerGroup How many top documents to keep within each group.
    */
-  public TopGroups<?> getTopGroups(Sort withinGroupSort, int groupOffset, int withinGroupOffset, int maxDocsPerGroup) throws IOException {
+  public TopGroups<?> getTopGroups(
+      Sort withinGroupSort, int groupOffset, int withinGroupOffset, int maxDocsPerGroup)
+      throws IOException {
 
-    //if (queueFull) {
-    //System.out.println("getTopGroups groupOffset=" + groupOffset + " topNGroups=" + topNGroups);
-    //}
+    // if (queueFull) {
+    // System.out.println("getTopGroups groupOffset=" + groupOffset + " topNGroups=" + topNGroups);
+    // }
     if (subDocUpto != 0) {
       processGroup();
     }
@@ -294,9 +282,9 @@ public class BlockGroupingCollector extends SimpleCollector {
 
     float maxScore = Float.MIN_VALUE;
 
-    @SuppressWarnings({"unchecked","rawtypes"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     final GroupDocs<Object>[] groups = new GroupDocs[groupQueue.size() - groupOffset];
-    for(int downTo=groupQueue.size()-groupOffset-1;downTo>=0;downTo--) {
+    for (int downTo = groupQueue.size() - groupOffset - 1; downTo >= 0; downTo--) {
       final OneGroup og = groupQueue.pop();
 
       // At this point we hold all docs w/ in each group,
@@ -305,18 +293,21 @@ public class BlockGroupingCollector extends SimpleCollector {
       if (withinGroupSort.equals(Sort.RELEVANCE)) {
         // Sort by score
         if (!needsScores) {
-          throw new IllegalArgumentException("cannot sort by relevance within group: needsScores=false");
+          throw new IllegalArgumentException(
+              "cannot sort by relevance within group: needsScores=false");
         }
         collector = TopScoreDocCollector.create(maxDocsPerGroup, Integer.MAX_VALUE);
       } else {
         // Sort by fields
-        collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, Integer.MAX_VALUE); // TODO: disable exact counts?
+        collector =
+            TopFieldCollector.create(
+                withinGroupSort, maxDocsPerGroup, Integer.MAX_VALUE); // TODO: disable exact counts?
       }
 
       float groupMaxScore = needsScores ? Float.NEGATIVE_INFINITY : Float.NaN;
       LeafCollector leafCollector = collector.getLeafCollector(og.readerContext);
       leafCollector.setScorer(fakeScorer);
-      for(int docIDX=0;docIDX<og.count;docIDX++) {
+      for (int docIDX = 0; docIDX < og.count; docIDX++) {
         final int doc = og.docs[docIDX];
         fakeScorer.doc = doc;
         if (needsScores) {
@@ -330,7 +321,7 @@ public class BlockGroupingCollector extends SimpleCollector {
       final Object[] groupSortValues;
 
       groupSortValues = new Comparable<?>[comparators.length];
-      for(int sortFieldIDX=0;sortFieldIDX<comparators.length;sortFieldIDX++) {
+      for (int sortFieldIDX = 0; sortFieldIDX < comparators.length; sortFieldIDX++) {
         groupSortValues[sortFieldIDX] = comparators[sortFieldIDX].value(og.comparatorSlot);
       }
 
@@ -338,12 +329,14 @@ public class BlockGroupingCollector extends SimpleCollector {
 
       // TODO: we could aggregate scores across children
       // by Sum/Avg instead of passing NaN:
-      groups[downTo] = new GroupDocs<>(Float.NaN,
-                                             groupMaxScore,
-                                             new TotalHits(og.count, TotalHits.Relation.EQUAL_TO),
-                                             topDocs.scoreDocs,
-                                             null,
-                                             groupSortValues);
+      groups[downTo] =
+          new GroupDocs<>(
+              Float.NaN,
+              groupMaxScore,
+              new TotalHits(og.count, TotalHits.Relation.EQUAL_TO),
+              topDocs.scoreDocs,
+              null,
+              groupSortValues);
       maxScore = Math.max(maxScore, groupMaxScore);
     }
 
@@ -355,10 +348,15 @@ public class BlockGroupingCollector extends SimpleCollector {
     }
     */
 
-    return new TopGroups<>(new TopGroups<>(groupSort.getSort(),
-                                       withinGroupSort.getSort(),
-                                       totalHitCount, totalGroupedHitCount, groups, maxScore),
-                         totalGroupCount);
+    return new TopGroups<>(
+        new TopGroups<>(
+            groupSort.getSort(),
+            withinGroupSort.getSort(),
+            totalHitCount,
+            totalGroupedHitCount,
+            groups,
+            maxScore),
+        totalGroupCount);
   }
 
   @Override
@@ -380,7 +378,7 @@ public class BlockGroupingCollector extends SimpleCollector {
         processGroup();
       }
       groupEndDocID = lastDocPerGroupBits.advance(doc);
-      //System.out.println("  adv " + groupEndDocID + " " + lastDocPerGroupBits);
+      // System.out.println("  adv " + groupEndDocID + " " + lastDocPerGroupBits);
       subDocUpto = 0;
       groupCompetes = !queueFull;
     }
@@ -404,15 +402,15 @@ public class BlockGroupingCollector extends SimpleCollector {
       if (subDocUpto == 1) {
         assert !queueFull;
 
-        //System.out.println("    init copy to bottomSlot=" + bottomSlot);
+        // System.out.println("    init copy to bottomSlot=" + bottomSlot);
         for (LeafFieldComparator fc : leafComparators) {
           fc.copy(bottomSlot, doc);
           fc.setBottom(bottomSlot);
-        }        
+        }
         topGroupDoc = doc;
       } else {
         // Compare to bottomSlot
-        for (int compIDX = 0;; compIDX++) {
+        for (int compIDX = 0; ; compIDX++) {
           final int c = reversed[compIDX] * leafComparators[compIDX].compareBottom(doc);
           if (c < 0) {
             // Definitely not competitive -- done
@@ -428,25 +426,25 @@ public class BlockGroupingCollector extends SimpleCollector {
           }
         }
 
-        //System.out.println("       best w/in group!");
-        
+        // System.out.println("       best w/in group!");
+
         for (LeafFieldComparator fc : leafComparators) {
           fc.copy(bottomSlot, doc);
           // Necessary because some comparators cache
           // details of bottom slot; this forces them to
           // re-cache:
           fc.setBottom(bottomSlot);
-        }        
+        }
         topGroupDoc = doc;
       }
     } else {
       // We're not sure this group will make it into the
       // queue yet
-      for (int compIDX = 0;; compIDX++) {
+      for (int compIDX = 0; ; compIDX++) {
         final int c = reversed[compIDX] * leafComparators[compIDX].compareBottom(doc);
         if (c < 0) {
           // Definitely not competitive -- done
-          //System.out.println("    doc doesn't compete w/ top groups");
+          // System.out.println("    doc doesn't compete w/ top groups");
           return;
         } else if (c > 0) {
           // Definitely competitive.
@@ -455,7 +453,7 @@ public class BlockGroupingCollector extends SimpleCollector {
           // Ties with bottom, except we know this docID is
           // > docID in the queue (docs are visited in
           // order), so not competitive:
-          //System.out.println("    doc doesn't compete w/ top groups");
+          // System.out.println("    doc doesn't compete w/ top groups");
           return;
         }
       }
@@ -468,7 +466,7 @@ public class BlockGroupingCollector extends SimpleCollector {
         fc.setBottom(bottomSlot);
       }
       topGroupDoc = doc;
-      //System.out.println("        doc competes w/ top groups");
+      // System.out.println("        doc competes w/ top groups");
     }
   }
 
@@ -479,7 +477,7 @@ public class BlockGroupingCollector extends SimpleCollector {
     }
     subDocUpto = 0;
     docBase = readerContext.docBase;
-    //System.out.println("setNextReader base=" + docBase + " r=" + readerContext.reader);
+    // System.out.println("setNextReader base=" + docBase + " r=" + readerContext.reader);
     Scorer s = lastDocPerGroup.scorer(readerContext);
     if (s == null) {
       lastDocPerGroupBits = null;
@@ -489,7 +487,7 @@ public class BlockGroupingCollector extends SimpleCollector {
     groupEndDocID = -1;
 
     currentReaderContext = readerContext;
-    for (int i=0; i<comparators.length; i++) {
+    for (int i = 0; i < comparators.length; i++) {
       leafComparators[i] = comparators[i].getLeafComparator(readerContext);
     }
   }
@@ -513,6 +511,5 @@ public class BlockGroupingCollector extends SimpleCollector {
     public float score() {
       return score;
     }
-
   }
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/CollectedSearchGroup.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/CollectedSearchGroup.java
index 5e4bf14..a6a3c32 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/CollectedSearchGroup.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/CollectedSearchGroup.java
@@ -18,10 +18,12 @@ package org.apache.lucene.search.grouping;
 
 import org.apache.lucene.search.FieldComparator; // javadocs
 
-/** 
- * Expert: representation of a group in {@link FirstPassGroupingCollector},
- * tracking the top doc and {@link FieldComparator} slot.
- * @lucene.internal */
+/**
+ * Expert: representation of a group in {@link FirstPassGroupingCollector}, tracking the top doc and
+ * {@link FieldComparator} slot.
+ *
+ * @lucene.internal
+ */
 public class CollectedSearchGroup<T> extends SearchGroup<T> {
   int topDoc;
   int comparatorSlot;
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DistinctValuesCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DistinctValuesCollector.java
index ee38159..0d7d3e8 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DistinctValuesCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DistinctValuesCollector.java
@@ -22,13 +22,13 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.ScoreMode;
 import org.apache.lucene.search.SimpleCollector;
 
 /**
- * A second pass grouping collector that keeps track of distinct values for a specified field for the top N group.
+ * A second pass grouping collector that keeps track of distinct values for a specified field for
+ * the top N group.
  *
  * @lucene.experimental
  */
@@ -36,12 +36,15 @@ public class DistinctValuesCollector<T, R> extends SecondPassGroupingCollector<T
 
   /**
    * Create a DistinctValuesCollector
+   *
    * @param groupSelector the group selector to determine the top-level groups
-   * @param groups        the top-level groups to collect for
+   * @param groups the top-level groups to collect for
    * @param valueSelector a group selector to determine which values to collect per-group
    */
-  public DistinctValuesCollector(GroupSelector<T> groupSelector, Collection<SearchGroup<T>> groups,
-                                       GroupSelector<R> valueSelector) {
+  public DistinctValuesCollector(
+      GroupSelector<T> groupSelector,
+      Collection<SearchGroup<T>> groups,
+      GroupSelector<R> valueSelector) {
     super(groupSelector, groups, new DistinctValuesReducer<>(valueSelector));
   }
 
@@ -58,12 +61,9 @@ public class DistinctValuesCollector<T, R> extends SecondPassGroupingCollector<T
     public void collect(int doc) throws IOException {
       if (valueSelector.advanceTo(doc) == GroupSelector.State.ACCEPT) {
         R value = valueSelector.currentValue();
-        if (values.contains(value) == false)
-          values.add(valueSelector.copyValue());
-      }
-      else {
-        if (values.contains(null) == false)
-          values.add(null);
+        if (values.contains(value) == false) values.add(valueSelector.copyValue());
+      } else {
+        if (values.contains(null) == false) values.add(null);
       }
     }
 
@@ -113,8 +113,8 @@ public class DistinctValuesCollector<T, R> extends SecondPassGroupingCollector<T
   }
 
   /**
-   * Returned by {@link DistinctValuesCollector#getGroups()},
-   * representing the value and set of distinct values for the group.
+   * Returned by {@link DistinctValuesCollector#getGroups()}, representing the value and set of
+   * distinct values for the group.
    */
   public static class GroupCount<T, R> {
 
@@ -126,5 +126,4 @@ public class DistinctValuesCollector<T, R> extends SecondPassGroupingCollector<T
       this.uniqueValues = values;
     }
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRange.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRange.java
index df34f6b..3ca4b8d 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRange.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRange.java
@@ -20,8 +20,7 @@ package org.apache.lucene.search.grouping;
 import java.util.Objects;
 
 /**
- * Represents a contiguous range of double values, with an inclusive minimum and
- * exclusive maximum
+ * Represents a contiguous range of double values, with an inclusive minimum and exclusive maximum
  */
 public class DoubleRange {
 
@@ -30,9 +29,7 @@ public class DoubleRange {
   /** The exclusive maximum value of this range */
   public double max;
 
-  /**
-   * Creates a new double range, running from {@code min} inclusive to {@code max} exclusive
-   */
+  /** Creates a new double range, running from {@code min} inclusive to {@code max} exclusive */
   public DoubleRange(double min, double max) {
     this.min = min;
     this.max = max;
@@ -48,8 +45,7 @@ public class DoubleRange {
     if (this == o) return true;
     if (o == null || getClass() != o.getClass()) return false;
     DoubleRange that = (DoubleRange) o;
-    return Double.compare(that.min, min) == 0 &&
-        Double.compare(that.max, max) == 0;
+    return Double.compare(that.min, min) == 0 && Double.compare(that.max, max) == 0;
   }
 
   @Override
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeFactory.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeFactory.java
index 3ea4606..6a4c957 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeFactory.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeFactory.java
@@ -17,9 +17,7 @@
 
 package org.apache.lucene.search.grouping;
 
-/**
- * Groups double values into ranges
- */
+/** Groups double values into ranges */
 public class DoubleRangeFactory {
 
   private final double min;
@@ -28,11 +26,12 @@ public class DoubleRangeFactory {
 
   /**
    * Creates a new DoubleRangeFactory
-   * @param min     a minimum value; all doubles below this value are grouped into a single range
-   * @param width   a standard width; all ranges between {@code min} and {@code max} are this wide,
-   *                with the exception of the final range which may be up to this width.  Ranges
-   *                are inclusive at the lower end, and exclusive at the upper end.
-   * @param max     a maximum value; all doubles above this value are grouped into a single range
+   *
+   * @param min a minimum value; all doubles below this value are grouped into a single range
+   * @param width a standard width; all ranges between {@code min} and {@code max} are this wide,
+   *     with the exception of the final range which may be up to this width. Ranges are inclusive
+   *     at the lower end, and exclusive at the upper end.
+   * @param max a maximum value; all doubles above this value are grouped into a single range
    */
   public DoubleRangeFactory(double min, double width, double max) {
     this.min = min;
@@ -42,12 +41,14 @@ public class DoubleRangeFactory {
 
   /**
    * Finds the DoubleRange that a value should be grouped into
+   *
    * @param value the value to group
    * @param reuse an existing DoubleRange object to reuse
    */
   public DoubleRange getRange(double value, DoubleRange reuse) {
-    if (reuse == null)
+    if (reuse == null) {
       reuse = new DoubleRange(Double.MIN_VALUE, Double.MAX_VALUE);
+    }
     if (value < min) {
       reuse.max = min;
       reuse.min = Double.MIN_VALUE;
@@ -63,5 +64,4 @@ public class DoubleRangeFactory {
     reuse.max = reuse.min + width;
     return reuse;
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeGroupSelector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeGroupSelector.java
index 4a6a65a..bacf9a6 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeGroupSelector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeGroupSelector.java
@@ -21,15 +21,12 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.DoubleValues;
 import org.apache.lucene.search.DoubleValuesSource;
 import org.apache.lucene.search.Scorable;
 
-/**
- * A GroupSelector implementation that groups documents by double values
- */
+/** A GroupSelector implementation that groups documents by double values */
 public class DoubleRangeGroupSelector extends GroupSelector<DoubleRange> {
 
   private final DoubleValuesSource source;
@@ -45,8 +42,10 @@ public class DoubleRangeGroupSelector extends GroupSelector<DoubleRange> {
 
   /**
    * Creates a new DoubleRangeGroupSelector
-   * @param source        a DoubleValuesSource to retrieve double values per document
-   * @param rangeFactory  a DoubleRangeFactory that defines how to group the double values into range buckets
+   *
+   * @param source a DoubleValuesSource to retrieve double values per document
+   * @param rangeFactory a DoubleRangeFactory that defines how to group the double values into range
+   *     buckets
    */
   public DoubleRangeGroupSelector(DoubleValuesSource source, DoubleRangeFactory rangeFactory) {
     this.source = source;
@@ -91,10 +90,11 @@ public class DoubleRangeGroupSelector extends GroupSelector<DoubleRange> {
     inSecondPass = new HashSet<>();
     includeEmpty = false;
     for (SearchGroup<DoubleRange> group : searchGroups) {
-      if (group.groupValue == null)
+      if (group.groupValue == null) {
         includeEmpty = true;
-      else
+      } else {
         inSecondPass.add(group.groupValue);
+      }
     }
   }
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/FirstPassGroupingCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/FirstPassGroupingCollector.java
index f5b0597..6873eb3 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/FirstPassGroupingCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/FirstPassGroupingCollector.java
@@ -22,7 +22,6 @@ import java.util.Collection;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.TreeSet;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.FieldComparator;
 import org.apache.lucene.search.LeafFieldComparator;
@@ -32,12 +31,11 @@ import org.apache.lucene.search.SimpleCollector;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
 
-/** FirstPassGroupingCollector is the first of two passes necessary
- *  to collect grouped hits.  This pass gathers the top N sorted
- *  groups. Groups are defined by a {@link GroupSelector}
+/**
+ * FirstPassGroupingCollector is the first of two passes necessary to collect grouped hits. This
+ * pass gathers the top N sorted groups. Groups are defined by a {@link GroupSelector}
  *
- *  <p>See {@link org.apache.lucene.search.grouping} for more
- *  details including a full code example.</p>
+ * <p>See {@link org.apache.lucene.search.grouping} for more details including a full code example.
  *
  * @lucene.experimental
  */
@@ -56,6 +54,7 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
   // Set once we reach topNGroups unique groups:
   /** @lucene.internal */
   protected TreeSet<CollectedSearchGroup<T>> orderedGroups;
+
   private int docBase;
   private int spareSlot;
 
@@ -63,16 +62,14 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
    * Create the first pass collector.
    *
    * @param groupSelector a GroupSelector used to defined groups
-   * @param groupSort The {@link Sort} used to sort the
-   *    groups.  The top sorted document within each group
-   *    according to groupSort, determines how that group
-   *    sorts against other groups.  This must be non-null,
-   *    ie, if you want to groupSort by relevance use
-   *    Sort.RELEVANCE.
+   * @param groupSort The {@link Sort} used to sort the groups. The top sorted document within each
+   *     group according to groupSort, determines how that group sorts against other groups. This
+   *     must be non-null, ie, if you want to groupSort by relevance use Sort.RELEVANCE.
    * @param topNGroups How many top groups to keep.
    */
   @SuppressWarnings({"unchecked", "rawtypes"})
-  public FirstPassGroupingCollector(GroupSelector<T> groupSelector, Sort groupSort, int topNGroups) {
+  public FirstPassGroupingCollector(
+      GroupSelector<T> groupSelector, Sort groupSort, int topNGroups) {
     this.groupSelector = groupSelector;
     if (topNGroups < 1) {
       throw new IllegalArgumentException("topNGroups must be >= 1 (got " + topNGroups + ")");
@@ -91,7 +88,8 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
     for (int i = 0; i < sortFields.length; i++) {
       final SortField sortField = sortFields[i];
 
-      // use topNGroups + 1 so we have a spare slot to use for comparing (tracked by this.spareSlot):
+      // use topNGroups + 1 so we have a spare slot to use for comparing (tracked by
+      // this.spareSlot):
       comparators[i] = sortField.getComparator(topNGroups + 1, i);
       reversed[i] = sortField.getReverse() ? -1 : 1;
     }
@@ -106,16 +104,16 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
   }
 
   /**
-   * Returns top groups, starting from offset.  This may
-   * return null, if no groups were collected, or if the
-   * number of unique groups collected is &lt;= offset.
+   * Returns top groups, starting from offset. This may return null, if no groups were collected, or
+   * if the number of unique groups collected is &lt;= offset.
    *
    * @param groupOffset The offset in the collected groups
    * @return top groups, starting from offset
    */
   public Collection<SearchGroup<T>> getTopGroups(int groupOffset) throws IOException {
 
-    //System.out.println("FP.getTopGroups groupOffset=" + groupOffset + " fillFields=" + fillFields + " groupMap.size()=" + groupMap.size());
+    // System.out.println("FP.getTopGroups groupOffset=" + groupOffset + " fillFields=" + fillFields
+    // + " groupMap.size()=" + groupMap.size());
 
     if (groupOffset < 0) {
       throw new IllegalArgumentException("groupOffset must be >= 0 (got " + groupOffset + ")");
@@ -132,20 +130,22 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
     final Collection<SearchGroup<T>> result = new ArrayList<>();
     int upto = 0;
     final int sortFieldCount = comparators.length;
-    for(CollectedSearchGroup<T> group : orderedGroups) {
+    for (CollectedSearchGroup<T> group : orderedGroups) {
       if (upto++ < groupOffset) {
         continue;
       }
-      // System.out.println("  group=" + (group.groupValue == null ? "null" : group.groupValue.toString()));
+      // System.out.println("  group=" + (group.groupValue == null ? "null" :
+      // group.groupValue.toString()));
       SearchGroup<T> searchGroup = new SearchGroup<>();
       searchGroup.groupValue = group.groupValue;
       searchGroup.sortValues = new Object[sortFieldCount];
-      for(int sortFieldIDX=0;sortFieldIDX<sortFieldCount;sortFieldIDX++) {
-        searchGroup.sortValues[sortFieldIDX] = comparators[sortFieldIDX].value(group.comparatorSlot);
+      for (int sortFieldIDX = 0; sortFieldIDX < sortFieldCount; sortFieldIDX++) {
+        searchGroup.sortValues[sortFieldIDX] =
+            comparators[sortFieldIDX].value(group.comparatorSlot);
       }
       result.add(searchGroup);
     }
-    //System.out.println("  return " + result.size() + " groups");
+    // System.out.println("  return " + result.size() + " groups");
     return result;
   }
 
@@ -168,7 +168,7 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
     // Downside: if the number of unique groups is very low, this is
     // wasted effort as we will most likely be updating an existing group.
     if (orderedGroups != null) {
-      for (int compIDX = 0;; compIDX++) {
+      for (int compIDX = 0; ; compIDX++) {
         final int c = reversed[compIDX] * leafComparators[compIDX].compareBottom(doc);
         if (c < 0) {
           // Definitely not competitive. So don't even bother to continue
@@ -190,8 +190,9 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
   @Override
   public void collect(int doc) throws IOException {
 
-    if (isCompetitive(doc) == false)
+    if (isCompetitive(doc) == false) {
       return;
+    }
 
     // TODO: should we add option to mean "ignore docs that
     // don't have the group field" (instead of stuffing them
@@ -236,7 +237,7 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
       // We already tested that the document is competitive, so replace
       // the bottom group with this new group.
       final CollectedSearchGroup<T> bottomGroup = orderedGroups.pollLast();
-      assert orderedGroups.size() == topNGroups -1;
+      assert orderedGroups.size() == topNGroups - 1;
 
       groupMap.remove(bottomGroup.groupValue);
 
@@ -261,16 +262,17 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
     }
 
     // Update existing group:
-    for (int compIDX = 0;; compIDX++) {
+    for (int compIDX = 0; ; compIDX++) {
       leafComparators[compIDX].copy(spareSlot, doc);
 
-      final int c = reversed[compIDX] * comparators[compIDX].compare(group.comparatorSlot, spareSlot);
+      final int c =
+          reversed[compIDX] * comparators[compIDX].compare(group.comparatorSlot, spareSlot);
       if (c < 0) {
         // Definitely not competitive.
         return;
       } else if (c > 0) {
         // Definitely competitive; set remaining comparators:
-        for (int compIDX2=compIDX+1; compIDX2<comparators.length; compIDX2++) {
+        for (int compIDX2 = compIDX + 1; compIDX2 < comparators.length; compIDX2++) {
           leafComparators[compIDX2].copy(spareSlot, doc);
         }
         break;
@@ -289,7 +291,7 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
     if (orderedGroups != null) {
       prevLast = orderedGroups.last();
       orderedGroups.remove(group);
-      assert orderedGroups.size() == topNGroups-1;
+      assert orderedGroups.size() == topNGroups - 1;
     } else {
       prevLast = null;
     }
@@ -306,7 +308,8 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
       orderedGroups.add(group);
       assert orderedGroups.size() == topNGroups;
       final CollectedSearchGroup<?> newLast = orderedGroups.last();
-      // If we changed the value of the last group, or changed which group was last, then update bottom:
+      // If we changed the value of the last group, or changed which group was last, then update
+      // bottom:
       if (group == newLast || prevLast != newLast) {
         for (LeafFieldComparator fc : leafComparators) {
           fc.setBottom(newLast.comparatorSlot);
@@ -316,20 +319,21 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
   }
 
   private void buildSortedSet() throws IOException {
-    final Comparator<CollectedSearchGroup<?>> comparator = new Comparator<CollectedSearchGroup<?>>() {
-      @Override
-      public int compare(CollectedSearchGroup<?> o1, CollectedSearchGroup<?> o2) {
-        for (int compIDX = 0;; compIDX++) {
-          FieldComparator<?> fc = comparators[compIDX];
-          final int c = reversed[compIDX] * fc.compare(o1.comparatorSlot, o2.comparatorSlot);
-          if (c != 0) {
-            return c;
-          } else if (compIDX == compIDXEnd) {
-            return o1.topDoc - o2.topDoc;
+    final Comparator<CollectedSearchGroup<?>> comparator =
+        new Comparator<CollectedSearchGroup<?>>() {
+          @Override
+          public int compare(CollectedSearchGroup<?> o1, CollectedSearchGroup<?> o2) {
+            for (int compIDX = 0; ; compIDX++) {
+              FieldComparator<?> fc = comparators[compIDX];
+              final int c = reversed[compIDX] * fc.compare(o1.comparatorSlot, o2.comparatorSlot);
+              if (c != 0) {
+                return c;
+              } else if (compIDX == compIDXEnd) {
+                return o1.topDoc - o2.topDoc;
+              }
+            }
           }
-        }
-      }
-    };
+        };
 
     orderedGroups = new TreeSet<>(comparator);
     orderedGroups.addAll(groupMap.values());
@@ -343,18 +347,14 @@ public class FirstPassGroupingCollector<T> extends SimpleCollector {
   @Override
   protected void doSetNextReader(LeafReaderContext readerContext) throws IOException {
     docBase = readerContext.docBase;
-    for (int i=0; i<comparators.length; i++) {
+    for (int i = 0; i < comparators.length; i++) {
       leafComparators[i] = comparators[i].getLeafComparator(readerContext);
     }
     groupSelector.setNextReader(readerContext);
   }
 
-  /**
-   * @return the GroupSelector used for this Collector
-   */
+  /** @return the GroupSelector used for this Collector */
   public GroupSelector<T> getGroupSelector() {
     return groupSelector;
   }
-
 }
-
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupDocs.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupDocs.java
index 78861d0..9c0eccf 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupDocs.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupDocs.java
@@ -19,39 +19,43 @@ package org.apache.lucene.search.grouping;
 import org.apache.lucene.search.ScoreDoc;
 import org.apache.lucene.search.TotalHits;
 
-/** Represents one group in the results.
- * 
- * @lucene.experimental */
+/**
+ * Represents one group in the results.
+ *
+ * @lucene.experimental
+ */
 public class GroupDocs<T> {
-  /** The groupField value for all docs in this group; this
-   *  may be null if hits did not have the groupField. */
+  /**
+   * The groupField value for all docs in this group; this may be null if hits did not have the
+   * groupField.
+   */
   public final T groupValue;
 
   /** Max score in this group */
   public final float maxScore;
 
-  /** Overall aggregated score of this group (currently only
-   *  set by join queries). */
+  /** Overall aggregated score of this group (currently only set by join queries). */
   public final float score;
 
-  /** Hits; this may be {@link
-   * org.apache.lucene.search.FieldDoc} instances if the
-   * withinGroupSort sorted by fields. */
+  /**
+   * Hits; this may be {@link org.apache.lucene.search.FieldDoc} instances if the withinGroupSort
+   * sorted by fields.
+   */
   public final ScoreDoc[] scoreDocs;
 
   /** Total hits within this group */
   public final TotalHits totalHits;
 
-  /** Matches the groupSort passed to {@link
-   *  FirstPassGroupingCollector}. */
+  /** Matches the groupSort passed to {@link FirstPassGroupingCollector}. */
   public final Object[] groupSortValues;
 
-  public GroupDocs(float score,
-                   float maxScore,
-                   TotalHits totalHits,
-                   ScoreDoc[] scoreDocs,
-                   T groupValue,
-                   Object[] groupSortValues) {
+  public GroupDocs(
+      float score,
+      float maxScore,
+      TotalHits totalHits,
+      ScoreDoc[] scoreDocs,
+      T groupValue,
+      Object[] groupSortValues) {
     this.score = score;
     this.maxScore = maxScore;
     this.totalHits = totalHits;
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupFacetCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupFacetCollector.java
index 5abd645..5dfc0d2 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupFacetCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupFacetCollector.java
@@ -23,7 +23,6 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.NavigableSet;
 import java.util.TreeSet;
-
 import org.apache.lucene.search.Scorable;
 import org.apache.lucene.search.ScoreMode;
 import org.apache.lucene.search.SimpleCollector;
@@ -55,17 +54,19 @@ public abstract class GroupFacetCollector extends SimpleCollector {
   }
 
   /**
-   * Returns grouped facet results that were computed over zero or more segments.
-   * Grouped facet counts are merged from zero or more segment results.
+   * Returns grouped facet results that were computed over zero or more segments. Grouped facet
+   * counts are merged from zero or more segment results.
    *
    * @param size The total number of facets to include. This is typically offset + limit
-   * @param minCount The minimum count a facet entry should have to be included in the grouped facet result
-   * @param orderByCount Whether to sort the facet entries by facet entry count. If <code>false</code> then the facets
-   *                     are sorted lexicographically in ascending order.
+   * @param minCount The minimum count a facet entry should have to be included in the grouped facet
+   *     result
+   * @param orderByCount Whether to sort the facet entries by facet entry count. If <code>false
+   *     </code> then the facets are sorted lexicographically in ascending order.
    * @return grouped facet results
    * @throws IOException If I/O related errors occur during merging segment grouped facet counts.
    */
-  public GroupedFacetResult mergeSegmentResults(int size, int minCount, boolean orderByCount) throws IOException {
+  public GroupedFacetResult mergeSegmentResults(int size, int minCount, boolean orderByCount)
+      throws IOException {
     if (segmentFacetCounts != null) {
       segmentResults.add(createSegmentResult());
       segmentFacetCounts = null; // reset
@@ -83,7 +84,8 @@ public abstract class GroupFacetCollector extends SimpleCollector {
       segments.add(segmentResult);
     }
 
-    GroupedFacetResult facetResult = new GroupedFacetResult(size, minCount, orderByCount, totalCount, missingCount);
+    GroupedFacetResult facetResult =
+        new GroupedFacetResult(size, minCount, orderByCount, totalCount, missingCount);
     while (segments.size() > 0) {
       SegmentResult segmentResult = segments.top();
       BytesRef currentFacetValue = BytesRef.deepCopyOf(segmentResult.mergeTerm);
@@ -110,8 +112,7 @@ public abstract class GroupFacetCollector extends SimpleCollector {
   protected abstract SegmentResult createSegmentResult() throws IOException;
 
   @Override
-  public void setScorer(Scorable scorer) throws IOException {
-  }
+  public void setScorer(Scorable scorer) throws IOException {}
 
   @Override
   public ScoreMode scoreMode() {
@@ -119,31 +120,32 @@ public abstract class GroupFacetCollector extends SimpleCollector {
   }
 
   /**
-   * The grouped facet result. Containing grouped facet entries, total count and total missing count.
+   * The grouped facet result. Containing grouped facet entries, total count and total missing
+   * count.
    */
   public static class GroupedFacetResult {
 
-    private final static Comparator<FacetEntry> orderByCountAndValue = new Comparator<FacetEntry>() {
-
-      @Override
-      public int compare(FacetEntry a, FacetEntry b) {
-        int cmp = b.count - a.count; // Highest count first!
-        if (cmp != 0) {
-          return cmp;
-        }
-        return a.value.compareTo(b.value);
-      }
+    private static final Comparator<FacetEntry> orderByCountAndValue =
+        new Comparator<FacetEntry>() {
 
-    };
-
-    private final static Comparator<FacetEntry> orderByValue = new Comparator<FacetEntry>() {
+          @Override
+          public int compare(FacetEntry a, FacetEntry b) {
+            int cmp = b.count - a.count; // Highest count first!
+            if (cmp != 0) {
+              return cmp;
+            }
+            return a.value.compareTo(b.value);
+          }
+        };
 
-      @Override
-      public int compare(FacetEntry a, FacetEntry b) {
-        return a.value.compareTo(b.value);
-      }
+    private static final Comparator<FacetEntry> orderByValue =
+        new Comparator<FacetEntry>() {
 
-    };
+          @Override
+          public int compare(FacetEntry a, FacetEntry b) {
+            return a.value.compareTo(b.value);
+          }
+        };
 
     private final int maxSize;
     private final NavigableSet<FacetEntry> facetEntries;
@@ -152,7 +154,8 @@ public abstract class GroupFacetCollector extends SimpleCollector {
 
     private int currentMin;
 
-    public GroupedFacetResult(int size, int minCount, boolean orderByCount, int totalCount, int totalMissingCount) {
+    public GroupedFacetResult(
+        int size, int minCount, boolean orderByCount, int totalCount, int totalMissingCount) {
       this.facetEntries = new TreeSet<>(orderByCount ? orderByCountAndValue : orderByValue);
       this.totalMissingCount = totalMissingCount;
       this.totalCount = totalCount;
@@ -180,8 +183,8 @@ public abstract class GroupFacetCollector extends SimpleCollector {
     }
 
     /**
-     * Returns a list of facet entries to be rendered based on the specified offset and limit.
-     * The facet entries are retrieved from the facet entries collected during merging.
+     * Returns a list of facet entries to be rendered based on the specified offset and limit. The
+     * facet entries are retrieved from the facet entries collected during merging.
      *
      * @param offset The offset in the collected facet entries during merging
      * @param limit The number of facets to return starting from the offset.
@@ -224,9 +227,7 @@ public abstract class GroupFacetCollector extends SimpleCollector {
     }
   }
 
-  /**
-   * Represents a facet entry with a value and a count.
-   */
+  /** Represents a facet entry with a value and a count. */
   public static class FacetEntry {
 
     private final BytesRef value;
@@ -259,30 +260,23 @@ public abstract class GroupFacetCollector extends SimpleCollector {
 
     @Override
     public String toString() {
-      return "FacetEntry{" +
-          "value=" + value.utf8ToString() +
-          ", count=" + count +
-          '}';
+      return "FacetEntry{" + "value=" + value.utf8ToString() + ", count=" + count + '}';
     }
 
-    /**
-     * @return The value of this facet entry
-     */
+    /** @return The value of this facet entry */
     public BytesRef getValue() {
       return value;
     }
 
-    /**
-     * @return The count (number of groups) of this facet entry.
-     */
+    /** @return The count (number of groups) of this facet entry. */
     public int getCount() {
       return count;
     }
   }
 
   /**
-   * Contains the local grouped segment counts for a particular segment.
-   * Each <code>SegmentResult</code> must be added together.
+   * Contains the local grouped segment counts for a particular segment. Each <code>SegmentResult
+   * </code> must be added together.
    */
   protected abstract static class SegmentResult {
 
@@ -302,12 +296,12 @@ public abstract class GroupFacetCollector extends SimpleCollector {
     }
 
     /**
-     * Go to next term in this <code>SegmentResult</code> in order to retrieve the grouped facet counts.
+     * Go to next term in this <code>SegmentResult</code> in order to retrieve the grouped facet
+     * counts.
      *
      * @throws IOException If I/O related errors occur
      */
     protected abstract void nextTerm() throws IOException;
-
   }
 
   private static class SegmentResultPriorityQueue extends PriorityQueue<SegmentResult> {
@@ -321,5 +315,4 @@ public abstract class GroupFacetCollector extends SimpleCollector {
       return a.mergeTerm.compareTo(b.mergeTerm) < 0;
     }
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupReducer.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupReducer.java
index d3fb1d9..313172a 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupReducer.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupReducer.java
@@ -21,22 +21,19 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Collector;
 import org.apache.lucene.search.LeafCollector;
 import org.apache.lucene.search.Scorable;
 
 /**
- * Concrete implementations of this class define what to collect for individual
- * groups during the second-pass of a grouping search.
+ * Concrete implementations of this class define what to collect for individual groups during the
+ * second-pass of a grouping search.
  *
- * Each group is assigned a Collector returned by {@link #newCollector()}, and
- * {@link LeafCollector#collect(int)} is called for each document that is in
- * a group
+ * <p>Each group is assigned a Collector returned by {@link #newCollector()}, and {@link
+ * LeafCollector#collect(int)} is called for each document that is in a group
  *
  * @see SecondPassGroupingCollector
- *
  * @param <T> the type of the value used for grouping
  * @param <C> the type of {@link Collector} used to reduce each group
  */
@@ -47,7 +44,7 @@ public abstract class GroupReducer<T, C extends Collector> {
   /**
    * Define which groups should be reduced.
    *
-   * Called by {@link SecondPassGroupingCollector}
+   * <p>Called by {@link SecondPassGroupingCollector}
    */
   public void setGroups(Collection<SearchGroup<T>> groups) {
     for (SearchGroup<T> group : groups) {
@@ -55,25 +52,20 @@ public abstract class GroupReducer<T, C extends Collector> {
     }
   }
 
-  /**
-   * Whether or not this reducer requires collected documents to be scored
-   */
+  /** Whether or not this reducer requires collected documents to be scored */
   public abstract boolean needsScores();
 
-  /**
-   * Creates a new Collector for each group
-   */
+  /** Creates a new Collector for each group */
   protected abstract C newCollector();
 
-  /**
-   * Get the Collector for a given group
-   */
+  /** Get the Collector for a given group */
   public final C getCollector(T value) {
     return groups.get(value).collector;
   }
 
   /**
    * Collect a given document into a given group
+   *
    * @throws IOException on error
    */
   public final void collect(T value, int doc) throws IOException {
@@ -81,18 +73,14 @@ public abstract class GroupReducer<T, C extends Collector> {
     collector.leafCollector.collect(doc);
   }
 
-  /**
-   * Set the Scorer on all group collectors
-   */
+  /** Set the Scorer on all group collectors */
   public final void setScorer(Scorable scorer) throws IOException {
     for (GroupCollector<C> collector : groups.values()) {
       collector.leafCollector.setScorer(scorer);
     }
   }
 
-  /**
-   * Called when the parent {@link SecondPassGroupingCollector} moves to a new segment
-   */
+  /** Called when the parent {@link SecondPassGroupingCollector} moves to a new segment */
   public final void setNextReader(LeafReaderContext ctx) throws IOException {
     for (GroupCollector<C> collector : groups.values()) {
       collector.leafCollector = collector.collector.getLeafCollector(ctx);
@@ -108,5 +96,4 @@ public abstract class GroupReducer<T, C extends Collector> {
       this.collector = collector;
     }
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupSelector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupSelector.java
index 92962a4..a5e4ddc 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupSelector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupSelector.java
@@ -19,61 +19,52 @@ package org.apache.lucene.search.grouping;
 
 import java.io.IOException;
 import java.util.Collection;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Scorable;
 
 /**
  * Defines a group, for use by grouping collectors
  *
- * A GroupSelector acts as an iterator over documents.  For each segment, clients
- * should call {@link #setNextReader(LeafReaderContext)}, and then {@link #advanceTo(int)}
- * for each matching document.
+ * <p>A GroupSelector acts as an iterator over documents. For each segment, clients should call
+ * {@link #setNextReader(LeafReaderContext)}, and then {@link #advanceTo(int)} for each matching
+ * document.
  *
  * @param <T> the type of the group value
  */
 public abstract class GroupSelector<T> {
 
-  /**
-   * What to do with the current value
-   */
-  public enum State { SKIP, ACCEPT }
+  /** What to do with the current value */
+  public enum State {
+    SKIP,
+    ACCEPT
+  }
 
-  /**
-   * Set the LeafReaderContext
-   */
+  /** Set the LeafReaderContext */
   public abstract void setNextReader(LeafReaderContext readerContext) throws IOException;
 
-  /**
-   * Set the current Scorer
-   */
+  /** Set the current Scorer */
   public abstract void setScorer(Scorable scorer) throws IOException;
 
-  /**
-   * Advance the GroupSelector's iterator to the given document
-   */
+  /** Advance the GroupSelector's iterator to the given document */
   public abstract State advanceTo(int doc) throws IOException;
 
   /**
    * Get the group value of the current document
    *
-   * N.B. this object may be reused, for a persistent version use {@link #copyValue()}
+   * <p>N.B. this object may be reused, for a persistent version use {@link #copyValue()}
    */
   public abstract T currentValue() throws IOException;
 
-  /**
-   * @return a copy of the group value of the current document
-   */
+  /** @return a copy of the group value of the current document */
   public abstract T copyValue() throws IOException;
 
   /**
    * Set a restriction on the group values returned by this selector
    *
-   * If the selector is positioned on a document whose group value is not contained
-   * within this set, then {@link #advanceTo(int)} will return {@link State#SKIP}
+   * <p>If the selector is positioned on a document whose group value is not contained within this
+   * set, then {@link #advanceTo(int)} will return {@link State#SKIP}
    *
    * @param groups a set of {@link SearchGroup} objects to limit selections to
    */
   public abstract void setGroups(Collection<SearchGroup<T>> groups);
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupingSearch.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupingSearch.java
index 25ed377..ce97e2a 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupingSearch.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/GroupingSearch.java
@@ -20,7 +20,6 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
-
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.search.CachingCollector;
 import org.apache.lucene.search.Collector;
@@ -62,8 +61,9 @@ public class GroupingSearch {
   private Bits matchingGroupHeads;
 
   /**
-   * Constructs a <code>GroupingSearch</code> instance that groups documents by index terms using DocValues.
-   * The group field can only have one token per document. This means that the field must not be analysed.
+   * Constructs a <code>GroupingSearch</code> instance that groups documents by index terms using
+   * DocValues. The group field can only have one token per document. This means that the field must
+   * not be analysed.
    *
    * @param groupField The name of the field to group by.
    */
@@ -72,7 +72,9 @@ public class GroupingSearch {
   }
 
   /**
-   * Constructs a <code>GroupingSearch</code> instance that groups documents using a {@link GroupSelector}
+   * Constructs a <code>GroupingSearch</code> instance that groups documents using a {@link
+   * GroupSelector}
+   *
    * @param groupSelector a {@link GroupSelector} that defines groups for this GroupingSearch
    */
   public GroupingSearch(GroupSelector<?> groupSelector) {
@@ -80,10 +82,10 @@ public class GroupingSearch {
   }
 
   /**
-   * Constructs a <code>GroupingSearch</code> instance that groups documents by function using a {@link ValueSource}
-   * instance.
+   * Constructs a <code>GroupingSearch</code> instance that groups documents by function using a
+   * {@link ValueSource} instance.
    *
-   * @param groupFunction      The function to group by specified as {@link ValueSource}
+   * @param groupFunction The function to group by specified as {@link ValueSource}
    * @param valueSourceContext The context of the specified groupFunction
    */
   public GroupingSearch(ValueSource groupFunction, Map<Object, Object> valueSourceContext) {
@@ -91,8 +93,8 @@ public class GroupingSearch {
   }
 
   /**
-   * Constructor for grouping documents by doc block.
-   * This constructor can only be used when documents belonging in a group are indexed in one block.
+   * Constructor for grouping documents by doc block. This constructor can only be used when
+   * documents belonging in a group are indexed in one block.
    *
    * @param groupEndDocs The query that marks the last document in all doc blocks
    */
@@ -106,36 +108,44 @@ public class GroupingSearch {
   }
 
   /**
-   * Executes a grouped search. Both the first pass and second pass are executed on the specified searcher.
+   * Executes a grouped search. Both the first pass and second pass are executed on the specified
+   * searcher.
    *
-   * @param searcher    The {@link org.apache.lucene.search.IndexSearcher} instance to execute the grouped search on.
-   * @param query       The query to execute with the grouping
+   * @param searcher The {@link org.apache.lucene.search.IndexSearcher} instance to execute the
+   *     grouped search on.
+   * @param query The query to execute with the grouping
    * @param groupOffset The group offset
-   * @param groupLimit  The number of groups to return from the specified group offset
+   * @param groupLimit The number of groups to return from the specified group offset
    * @return the grouped result as a {@link TopGroups} instance
    * @throws IOException If any I/O related errors occur
    */
   @SuppressWarnings("unchecked")
-  public <T> TopGroups<T> search(IndexSearcher searcher, Query query, int groupOffset, int groupLimit) throws IOException {
+  public <T> TopGroups<T> search(
+      IndexSearcher searcher, Query query, int groupOffset, int groupLimit) throws IOException {
     if (grouper != null) {
       return groupByFieldOrFunction(searcher, query, groupOffset, groupLimit);
     } else if (groupEndDocs != null) {
       return (TopGroups<T>) groupByDocBlock(searcher, query, groupOffset, groupLimit);
     } else {
-      throw new IllegalStateException("Either groupField, groupFunction or groupEndDocs must be set."); // This can't happen...
+      throw new IllegalStateException(
+          "Either groupField, groupFunction or groupEndDocs must be set."); // This can't happen...
     }
   }
 
   @SuppressWarnings({"unchecked", "rawtypes"})
-  protected TopGroups groupByFieldOrFunction(IndexSearcher searcher, Query query, int groupOffset, int groupLimit) throws IOException {
+  protected TopGroups groupByFieldOrFunction(
+      IndexSearcher searcher, Query query, int groupOffset, int groupLimit) throws IOException {
     int topN = groupOffset + groupLimit;
 
-    final FirstPassGroupingCollector firstPassCollector = new FirstPassGroupingCollector(grouper, groupSort, topN);
-    final AllGroupsCollector allGroupsCollector = allGroups ? new AllGroupsCollector(grouper) : null;
-    final AllGroupHeadsCollector allGroupHeadsCollector
-        = allGroupHeads ? AllGroupHeadsCollector.newCollector(grouper, sortWithinGroup) : null;
+    final FirstPassGroupingCollector firstPassCollector =
+        new FirstPassGroupingCollector(grouper, groupSort, topN);
+    final AllGroupsCollector allGroupsCollector =
+        allGroups ? new AllGroupsCollector(grouper) : null;
+    final AllGroupHeadsCollector allGroupHeadsCollector =
+        allGroupHeads ? AllGroupHeadsCollector.newCollector(grouper, sortWithinGroup) : null;
 
-    final Collector firstRound = MultiCollector.wrap(firstPassCollector, allGroupsCollector, allGroupHeadsCollector);
+    final Collector firstRound =
+        MultiCollector.wrap(firstPassCollector, allGroupsCollector, allGroupHeadsCollector);
 
     CachingCollector cachedCollector = null;
     if (maxCacheRAMMB != null || maxDocsToCache != null) {
@@ -150,8 +160,10 @@ public class GroupingSearch {
     }
 
     matchingGroups = allGroups ? allGroupsCollector.getGroups() : Collections.emptyList();
-    matchingGroupHeads = allGroupHeads ? allGroupHeadsCollector.retrieveGroupHeads(searcher.getIndexReader().maxDoc())
-        : new Bits.MatchNoBits(searcher.getIndexReader().maxDoc());
+    matchingGroupHeads =
+        allGroupHeads
+            ? allGroupHeadsCollector.retrieveGroupHeads(searcher.getIndexReader().maxDoc())
+            : new Bits.MatchNoBits(searcher.getIndexReader().maxDoc());
 
     Collection<SearchGroup> topSearchGroups = firstPassCollector.getTopGroups(groupOffset);
     if (topSearchGroups == null) {
@@ -159,8 +171,9 @@ public class GroupingSearch {
     }
 
     int topNInsideGroup = groupDocsOffset + groupDocsLimit;
-    TopGroupsCollector secondPassCollector
-        = new TopGroupsCollector(grouper, topSearchGroups, groupSort, sortWithinGroup, topNInsideGroup, includeMaxScore);
+    TopGroupsCollector secondPassCollector =
+        new TopGroupsCollector(
+            grouper, topSearchGroups, groupSort, sortWithinGroup, topNInsideGroup, includeMaxScore);
 
     if (cachedCollector != null && cachedCollector.isCached()) {
       cachedCollector.replay(secondPassCollector);
@@ -169,29 +182,38 @@ public class GroupingSearch {
     }
 
     if (allGroups) {
-      return new TopGroups(secondPassCollector.getTopGroups(groupDocsOffset), matchingGroups.size());
+      return new TopGroups(
+          secondPassCollector.getTopGroups(groupDocsOffset), matchingGroups.size());
     } else {
       return secondPassCollector.getTopGroups(groupDocsOffset);
     }
   }
 
-  protected TopGroups<?> groupByDocBlock(IndexSearcher searcher, Query query, int groupOffset, int groupLimit) throws IOException {
+  protected TopGroups<?> groupByDocBlock(
+      IndexSearcher searcher, Query query, int groupOffset, int groupLimit) throws IOException {
     int topN = groupOffset + groupLimit;
     final Query endDocsQuery = searcher.rewrite(this.groupEndDocs);
-    final Weight groupEndDocs = searcher.createWeight(endDocsQuery, ScoreMode.COMPLETE_NO_SCORES, 1);
-    BlockGroupingCollector c = new BlockGroupingCollector(groupSort, topN, groupSort.needsScores() || sortWithinGroup.needsScores(), groupEndDocs);
+    final Weight groupEndDocs =
+        searcher.createWeight(endDocsQuery, ScoreMode.COMPLETE_NO_SCORES, 1);
+    BlockGroupingCollector c =
+        new BlockGroupingCollector(
+            groupSort,
+            topN,
+            groupSort.needsScores() || sortWithinGroup.needsScores(),
+            groupEndDocs);
     searcher.search(query, c);
     int topNInsideGroup = groupDocsOffset + groupDocsLimit;
     return c.getTopGroups(sortWithinGroup, groupOffset, groupDocsOffset, topNInsideGroup);
   }
 
   /**
-   * Enables caching for the second pass search. The cache will not grow over a specified limit in MB.
-   * The cache is filled during the first pass searched and then replayed during the second pass searched.
-   * If the cache grows beyond the specified limit, then the cache is purged and not used in the second pass search.
+   * Enables caching for the second pass search. The cache will not grow over a specified limit in
+   * MB. The cache is filled during the first pass searched and then replayed during the second pass
+   * searched. If the cache grows beyond the specified limit, then the cache is purged and not used
+   * in the second pass search.
    *
    * @param maxCacheRAMMB The maximum amount in MB the cache is allowed to hold
-   * @param cacheScores   Whether to cache the scores
+   * @param cacheScores Whether to cache the scores
    * @return <code>this</code>
    */
   public GroupingSearch setCachingInMB(double maxCacheRAMMB, boolean cacheScores) {
@@ -202,12 +224,13 @@ public class GroupingSearch {
   }
 
   /**
-   * Enables caching for the second pass search. The cache will not contain more than the maximum specified documents.
-   * The cache is filled during the first pass searched and then replayed during the second pass searched.
-   * If the cache grows beyond the specified limit, then the cache is purged and not used in the second pass search.
+   * Enables caching for the second pass search. The cache will not contain more than the maximum
+   * specified documents. The cache is filled during the first pass searched and then replayed
+   * during the second pass searched. If the cache grows beyond the specified limit, then the cache
+   * is purged and not used in the second pass search.
    *
    * @param maxDocsToCache The maximum number of documents the cache is allowed to hold
-   * @param cacheScores    Whether to cache the scores
+   * @param cacheScores Whether to cache the scores
    * @return <code>this</code>
    */
   public GroupingSearch setCaching(int maxDocsToCache, boolean cacheScores) {
@@ -229,8 +252,7 @@ public class GroupingSearch {
   }
 
   /**
-   * Specifies how groups are sorted.
-   * Defaults to {@link Sort#RELEVANCE}.
+   * Specifies how groups are sorted. Defaults to {@link Sort#RELEVANCE}.
    *
    * @param groupSort The sort for the groups.
    * @return <code>this</code>
@@ -241,8 +263,7 @@ public class GroupingSearch {
   }
 
   /**
-   * Specified how documents inside a group are sorted.
-   * Defaults to {@link Sort#RELEVANCE}.
+   * Specified how documents inside a group are sorted. Defaults to {@link Sort#RELEVANCE}.
    *
    * @param sortWithinGroup The sort for documents inside a group
    * @return <code>this</code>
@@ -286,11 +307,11 @@ public class GroupingSearch {
   }
 
   /**
-   * Whether to also compute all groups matching the query.
-   * This can be used to determine the number of groups, which can be used for accurate pagination.
-   * <p>
-   * When grouping by doc block the number of groups are automatically included in the {@link TopGroups} and this
-   * option doesn't have any influence.
+   * Whether to also compute all groups matching the query. This can be used to determine the number
+   * of groups, which can be used for accurate pagination.
+   *
+   * <p>When grouping by doc block the number of groups are automatically included in the {@link
+   * TopGroups} and this option doesn't have any influence.
    *
    * @param allGroups to also compute all groups matching the query
    * @return <code>this</code>
@@ -301,11 +322,11 @@ public class GroupingSearch {
   }
 
   /**
-   * If {@link #setAllGroups(boolean)} was set to <code>true</code> then all matching groups are returned, otherwise
-   * an empty collection is returned.
+   * If {@link #setAllGroups(boolean)} was set to <code>true</code> then all matching groups are
+   * returned, otherwise an empty collection is returned.
    *
-   * @param <T> The group value type. This can be a {@link BytesRef} or a {@link MutableValue} instance. If grouping
-   *            by doc block this the group value is always <code>null</code>.
+   * @param <T> The group value type. This can be a {@link BytesRef} or a {@link MutableValue}
+   *     instance. If grouping by doc block this the group value is always <code>null</code>.
    * @return all matching groups are returned, or an empty collection
    */
   @SuppressWarnings({"unchecked", "rawtypes"})
@@ -315,10 +336,11 @@ public class GroupingSearch {
 
   /**
    * Whether to compute all group heads (most relevant document per group) matching the query.
-   * <p>
-   * This feature isn't enabled when grouping by doc block.
    *
-   * @param allGroupHeads Whether to compute all group heads (most relevant document per group) matching the query
+   * <p>This feature isn't enabled when grouping by doc block.
+   *
+   * @param allGroupHeads Whether to compute all group heads (most relevant document per group)
+   *     matching the query
    * @return <code>this</code>
    */
   public GroupingSearch setAllGroupHeads(boolean allGroupHeads) {
@@ -327,12 +349,13 @@ public class GroupingSearch {
   }
 
   /**
-   * Returns the matching group heads if {@link #setAllGroupHeads(boolean)} was set to true or an empty bit set.
+   * Returns the matching group heads if {@link #setAllGroupHeads(boolean)} was set to true or an
+   * empty bit set.
    *
-   * @return The matching group heads if {@link #setAllGroupHeads(boolean)} was set to true or an empty bit set
+   * @return The matching group heads if {@link #setAllGroupHeads(boolean)} was set to true or an
+   *     empty bit set
    */
   public Bits getAllGroupHeads() {
     return matchingGroupHeads;
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRange.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRange.java
index 7b6c845..9b631d1 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRange.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRange.java
@@ -19,10 +19,7 @@ package org.apache.lucene.search.grouping;
 
 import java.util.Objects;
 
-/**
- * Represents a contiguous range of long values, with an inclusive minimum and
- * exclusive maximum
- */
+/** Represents a contiguous range of long values, with an inclusive minimum and exclusive maximum */
 public class LongRange {
 
   /** The inclusive minimum value of this range */
@@ -30,9 +27,7 @@ public class LongRange {
   /** The exclusive maximum value of this range */
   public long max;
 
-  /**
-   * Creates a new double range, running from {@code min} inclusive to {@code max} exclusive
-   */
+  /** Creates a new double range, running from {@code min} inclusive to {@code max} exclusive */
   public LongRange(long min, long max) {
     this.min = min;
     this.max = max;
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeFactory.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeFactory.java
index be66647..c2795d8 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeFactory.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeFactory.java
@@ -17,9 +17,7 @@
 
 package org.apache.lucene.search.grouping;
 
-/**
- * Groups double values into ranges
- */
+/** Groups double values into ranges */
 public class LongRangeFactory {
 
   private final long min;
@@ -28,11 +26,12 @@ public class LongRangeFactory {
 
   /**
    * Creates a new LongRangeFactory
-   * @param min     a minimum value; all longs below this value are grouped into a single range
-   * @param width   a standard width; all ranges between {@code min} and {@code max} are this wide,
-   *                with the exception of the final range which may be up to this width.  Ranges
-   *                are inclusive at the lower end, and exclusive at the upper end.
-   * @param max     a maximum value; all longs above this value are grouped into a single range
+   *
+   * @param min a minimum value; all longs below this value are grouped into a single range
+   * @param width a standard width; all ranges between {@code min} and {@code max} are this wide,
+   *     with the exception of the final range which may be up to this width. Ranges are inclusive
+   *     at the lower end, and exclusive at the upper end.
+   * @param max a maximum value; all longs above this value are grouped into a single range
    */
   public LongRangeFactory(long min, long width, long max) {
     this.min = min;
@@ -42,12 +41,14 @@ public class LongRangeFactory {
 
   /**
    * Finds the LongRange that a value should be grouped into
+   *
    * @param value the value to group
    * @param reuse an existing LongRange object to reuse
    */
   public LongRange getRange(long value, LongRange reuse) {
-    if (reuse == null)
+    if (reuse == null) {
       reuse = new LongRange(Long.MIN_VALUE, Long.MAX_VALUE);
+    }
     if (value < min) {
       reuse.max = min;
       reuse.min = Long.MIN_VALUE;
@@ -63,5 +64,4 @@ public class LongRangeFactory {
     reuse.max = reuse.min + width;
     return reuse;
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeGroupSelector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeGroupSelector.java
index 7dd0c23..ba8623d 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeGroupSelector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeGroupSelector.java
@@ -21,16 +21,13 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.DoubleValuesSource;
 import org.apache.lucene.search.LongValues;
 import org.apache.lucene.search.LongValuesSource;
 import org.apache.lucene.search.Scorable;
 
-/**
- * A GroupSelector implementation that groups documents by long values
- */
+/** A GroupSelector implementation that groups documents by long values */
 public class LongRangeGroupSelector extends GroupSelector<LongRange> {
 
   private final LongValuesSource source;
@@ -46,8 +43,10 @@ public class LongRangeGroupSelector extends GroupSelector<LongRange> {
 
   /**
    * Creates a new LongRangeGroupSelector
-   * @param source        a LongValuesSource to retrieve long values per document
-   * @param rangeFactory  a LongRangeFactory that defines how to group the long values into range buckets
+   *
+   * @param source a LongValuesSource to retrieve long values per document
+   * @param rangeFactory a LongRangeFactory that defines how to group the long values into range
+   *     buckets
    */
   public LongRangeGroupSelector(LongValuesSource source, LongRangeFactory rangeFactory) {
     this.source = source;
@@ -92,10 +91,11 @@ public class LongRangeGroupSelector extends GroupSelector<LongRange> {
     inSecondPass = new HashSet<>();
     includeEmpty = false;
     for (SearchGroup<LongRange> group : searchGroups) {
-      if (group.groupValue == null)
+      if (group.groupValue == null) {
         includeEmpty = true;
-      else
+      } else {
         inSecondPass.add(group.groupValue);
+      }
     }
   }
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java
index 58e1f74..f859e47 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.NavigableSet;
 import java.util.TreeSet;
-
 import org.apache.lucene.search.FieldComparator;
 import org.apache.lucene.search.Sort;
 import org.apache.lucene.search.SortField;
@@ -38,19 +37,23 @@ import org.apache.lucene.search.SortField;
  */
 public class SearchGroup<T> {
 
-  /** The value that defines this group  */
+  /** The value that defines this group */
   public T groupValue;
 
-  /** The sort values used during sorting. These are the
-   *  groupSort field values of the highest rank document
-   *  (by the groupSort) within the group.  Can be
-   * <code>null</code> if <code>fillFields=false</code> had
-   * been passed to {@link FirstPassGroupingCollector#getTopGroups} */
+  /**
+   * The sort values used during sorting. These are the groupSort field values of the highest rank
+   * document (by the groupSort) within the group. Can be <code>null</code> if <code>
+   * fillFields=false</code> had been passed to {@link FirstPassGroupingCollector#getTopGroups}
+   */
   public Object[] sortValues;
 
   @Override
   public String toString() {
-    return("SearchGroup(groupValue=" + groupValue + " sortValues=" + Arrays.toString(sortValues) + ")");
+    return ("SearchGroup(groupValue="
+        + groupValue
+        + " sortValues="
+        + Arrays.toString(sortValues)
+        + ")");
   }
 
   @Override
@@ -90,11 +93,12 @@ public class SearchGroup<T> {
       assert iter.hasNext();
       final SearchGroup<T> group = iter.next();
       if (group.sortValues == null) {
-        throw new IllegalArgumentException("group.sortValues is null; you must pass fillFields=true to the first pass collector");
+        throw new IllegalArgumentException(
+            "group.sortValues is null; you must pass fillFields=true to the first pass collector");
       }
       return group;
     }
-    
+
     @Override
     public String toString() {
       return "ShardIter(shard=" + shardIndex + ")";
@@ -162,7 +166,7 @@ public class SearchGroup<T> {
 
     @SuppressWarnings("rawtypes")
     public final FieldComparator[] comparators;
-    
+
     public final int[] reversed;
 
     @SuppressWarnings({"unchecked", "rawtypes"})
@@ -178,18 +182,19 @@ public class SearchGroup<T> {
     }
 
     @Override
-    @SuppressWarnings({"unchecked","rawtypes"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public int compare(MergedGroup<T> group, MergedGroup<T> other) {
       if (group == other) {
         return 0;
       }
-      //System.out.println("compare group=" + group + " other=" + other);
+      // System.out.println("compare group=" + group + " other=" + other);
       final Object[] groupValues = group.topValues;
       final Object[] otherValues = other.topValues;
-      //System.out.println("  groupValues=" + groupValues + " otherValues=" + otherValues);
-      for (int compIDX = 0;compIDX < comparators.length; compIDX++) {
-        final int c = reversed[compIDX] * comparators[compIDX].compareValues(groupValues[compIDX],
-                                                                             otherValues[compIDX]);
+      // System.out.println("  groupValues=" + groupValues + " otherValues=" + otherValues);
+      for (int compIDX = 0; compIDX < comparators.length; compIDX++) {
+        final int c =
+            reversed[compIDX]
+                * comparators[compIDX].compareValues(groupValues[compIDX], otherValues[compIDX]);
         if (c != 0) {
           return c;
         }
@@ -205,7 +210,7 @@ public class SearchGroup<T> {
 
     private final GroupComparator<T> groupComp;
     private final NavigableSet<MergedGroup<T>> queue;
-    private final Map<T,MergedGroup<T>> groupsSeen;
+    private final Map<T, MergedGroup<T>> groupsSeen;
 
     public GroupMerger(Sort groupSort) {
       groupComp = new GroupComparator<>(groupSort);
@@ -213,17 +218,18 @@ public class SearchGroup<T> {
       groupsSeen = new HashMap<>();
     }
 
-    @SuppressWarnings({"unchecked","rawtypes"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     private void updateNextGroup(int topN, ShardIter<T> shard) {
-      while(shard.iter.hasNext()) {
+      while (shard.iter.hasNext()) {
         final SearchGroup<T> group = shard.next();
         MergedGroup<T> mergedGroup = groupsSeen.get(group.groupValue);
         final boolean isNew = mergedGroup == null;
-        //System.out.println("    next group=" + (group.groupValue == null ? "null" : ((BytesRef) group.groupValue).utf8ToString()) + " sort=" + Arrays.toString(group.sortValues));
+        // System.out.println("    next group=" + (group.groupValue == null ? "null" : ((BytesRef)
+        // group.groupValue).utf8ToString()) + " sort=" + Arrays.toString(group.sortValues));
 
         if (isNew) {
           // Start a new group:
-          //System.out.println("      new");
+          // System.out.println("      new");
           mergedGroup = new MergedGroup<>(group.groupValue);
           mergedGroup.minShardIndex = shard.shardIndex;
           assert group.sortValues != null;
@@ -236,11 +242,13 @@ public class SearchGroup<T> {
           // processed; move on to next group...
           continue;
         } else {
-          //System.out.println("      old");
+          // System.out.println("      old");
           boolean competes = false;
-          for(int compIDX=0;compIDX<groupComp.comparators.length;compIDX++) {
-            final int cmp = groupComp.reversed[compIDX] * groupComp.comparators[compIDX].compareValues(group.sortValues[compIDX],
-                                                                                                       mergedGroup.topValues[compIDX]);
+          for (int compIDX = 0; compIDX < groupComp.comparators.length; compIDX++) {
+            final int cmp =
+                groupComp.reversed[compIDX]
+                    * groupComp.comparators[compIDX].compareValues(
+                        group.sortValues[compIDX], mergedGroup.topValues[compIDX]);
             if (cmp < 0) {
               // Definitely competes
               competes = true;
@@ -248,14 +256,14 @@ public class SearchGroup<T> {
             } else if (cmp > 0) {
               // Definitely does not compete
               break;
-            } else if (compIDX == groupComp.comparators.length-1) {
+            } else if (compIDX == groupComp.comparators.length - 1) {
               if (shard.shardIndex < mergedGroup.minShardIndex) {
                 competes = true;
               }
             }
           }
 
-          //System.out.println("      competes=" + competes);
+          // System.out.println("      competes=" + competes);
 
           if (competes) {
             // Group's sort changed -- remove & re-insert
@@ -274,23 +282,24 @@ public class SearchGroup<T> {
       }
 
       // Prune un-competitive groups:
-      while(queue.size() > topN) {
+      while (queue.size() > topN) {
         final MergedGroup<T> group = queue.pollLast();
-        //System.out.println("PRUNE: " + group);
+        // System.out.println("PRUNE: " + group);
         group.inQueue = false;
       }
     }
 
-    public Collection<SearchGroup<T>> merge(List<Collection<SearchGroup<T>>> shards, int offset, int topN) {
+    public Collection<SearchGroup<T>> merge(
+        List<Collection<SearchGroup<T>>> shards, int offset, int topN) {
 
       final int maxQueueSize = offset + topN;
 
-      //System.out.println("merge");
+      // System.out.println("merge");
       // Init queue:
-      for(int shardIDX=0;shardIDX<shards.size();shardIDX++) {
+      for (int shardIDX = 0; shardIDX < shards.size(); shardIDX++) {
         final Collection<SearchGroup<T>> shard = shards.get(shardIDX);
         if (!shard.isEmpty()) {
-          //System.out.println("  insert shard=" + shardIDX);
+          // System.out.println("  insert shard=" + shardIDX);
           updateNextGroup(maxQueueSize, new ShardIter<>(shard, shardIDX));
         }
       }
@@ -300,10 +309,12 @@ public class SearchGroup<T> {
 
       int count = 0;
 
-      while(!queue.isEmpty()) {
+      while (!queue.isEmpty()) {
         final MergedGroup<T> group = queue.pollFirst();
         group.processed = true;
-        //System.out.println("  pop: shards=" + group.shards + " group=" + (group.groupValue == null ? "null" : (((BytesRef) group.groupValue).utf8ToString())) + " sortValues=" + Arrays.toString(group.topValues));
+        // System.out.println("  pop: shards=" + group.shards + " group=" + (group.groupValue ==
+        // null ? "null" : (((BytesRef) group.groupValue).utf8ToString())) + " sortValues=" +
+        // Arrays.toString(group.topValues));
         if (count++ >= offset) {
           final SearchGroup<T> newGroup = new SearchGroup<>();
           newGroup.groupValue = group.groupValue;
@@ -312,12 +323,12 @@ public class SearchGroup<T> {
           if (newTopGroups.size() == topN) {
             break;
           }
-        //} else {
-        // System.out.println("    skip < offset");
+          // } else {
+          // System.out.println("    skip < offset");
         }
 
         // Advance all iters in this group:
-        for(ShardIter<T> shardIter : group.shards) {
+        for (ShardIter<T> shardIter : group.shards) {
           updateNextGroup(maxQueueSize, shardIter);
         }
       }
@@ -330,16 +341,16 @@ public class SearchGroup<T> {
     }
   }
 
-  /** Merges multiple collections of top groups, for example
-   *  obtained from separate index shards.  The provided
-   *  groupSort must match how the groups were sorted, and
-   *  the provided SearchGroups must have been computed
-   *  with fillFields=true passed to {@link
-   *  FirstPassGroupingCollector#getTopGroups}.
+  /**
+   * Merges multiple collections of top groups, for example obtained from separate index shards. The
+   * provided groupSort must match how the groups were sorted, and the provided SearchGroups must
+   * have been computed with fillFields=true passed to {@link
+   * FirstPassGroupingCollector#getTopGroups}.
    *
    * <p>NOTE: this returns null if the topGroups is empty.
    */
-  public static <T> Collection<SearchGroup<T>> merge(List<Collection<SearchGroup<T>>> topGroups, int offset, int topN, Sort groupSort) {
+  public static <T> Collection<SearchGroup<T>> merge(
+      List<Collection<SearchGroup<T>>> topGroups, int offset, int topN, Sort groupSort) {
     if (topGroups.isEmpty()) {
       return null;
     } else {
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/SecondPassGroupingCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/SecondPassGroupingCollector.java
index dc7d0aa..77cd049 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/SecondPassGroupingCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/SecondPassGroupingCollector.java
@@ -19,19 +19,17 @@ package org.apache.lucene.search.grouping;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.Objects;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Scorable;
 import org.apache.lucene.search.ScoreMode;
 import org.apache.lucene.search.SimpleCollector;
 
 /**
- * SecondPassGroupingCollector runs over an already collected set of
- * groups, further applying a {@link GroupReducer} to each group
+ * SecondPassGroupingCollector runs over an already collected set of groups, further applying a
+ * {@link GroupReducer} to each group
  *
  * @see TopGroupsCollector
  * @see DistinctValuesCollector
- *
  * @lucene.experimental
  */
 public class SecondPassGroupingCollector<T> extends SimpleCollector {
@@ -45,13 +43,17 @@ public class SecondPassGroupingCollector<T> extends SimpleCollector {
 
   /**
    * Create a new SecondPassGroupingCollector
-   * @param groupSelector   the GroupSelector that defines groups for this search
-   * @param groups          the groups to collect documents for
-   * @param reducer         the reducer to apply to each group
+   *
+   * @param groupSelector the GroupSelector that defines groups for this search
+   * @param groups the groups to collect documents for
+   * @param reducer the reducer to apply to each group
    */
-  public SecondPassGroupingCollector(GroupSelector<T> groupSelector, Collection<SearchGroup<T>> groups, GroupReducer<T, ?> reducer) {
+  public SecondPassGroupingCollector(
+      GroupSelector<T> groupSelector,
+      Collection<SearchGroup<T>> groups,
+      GroupReducer<T, ?> reducer) {
 
-    //System.out.println("SP init");
+    // System.out.println("SP init");
     if (groups.isEmpty()) {
       throw new IllegalArgumentException("no groups to collect (groups is empty)");
     }
@@ -64,9 +66,7 @@ public class SecondPassGroupingCollector<T> extends SimpleCollector {
     reducer.setGroups(groups);
   }
 
-  /**
-   * @return the GroupSelector used in this collector
-   */
+  /** @return the GroupSelector used in this collector */
   public GroupSelector<T> getGroupSelector() {
     return groupSelector;
   }
@@ -85,8 +85,9 @@ public class SecondPassGroupingCollector<T> extends SimpleCollector {
   @Override
   public void collect(int doc) throws IOException {
     totalHitCount++;
-    if (groupSelector.advanceTo(doc) == GroupSelector.State.SKIP)
+    if (groupSelector.advanceTo(doc) == GroupSelector.State.SKIP) {
       return;
+    }
     totalGroupedHitCount++;
     T value = groupSelector.currentValue();
     groupReducer.collect(value, doc);
@@ -97,5 +98,4 @@ public class SecondPassGroupingCollector<T> extends SimpleCollector {
     groupReducer.setNextReader(readerContext);
     groupSelector.setNextReader(readerContext);
   }
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupFacetCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupFacetCollector.java
index 39d28a5..96c948d 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupFacetCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupFacetCollector.java
@@ -19,7 +19,6 @@ package org.apache.lucene.search.grouping;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.SortedDocValues;
@@ -31,8 +30,8 @@ import org.apache.lucene.util.SentinelIntSet;
 import org.apache.lucene.util.UnicodeUtil;
 
 /**
- * An implementation of {@link GroupFacetCollector} that computes grouped facets based on the indexed terms
- * from DocValues.
+ * An implementation of {@link GroupFacetCollector} that computes grouped facets based on the
+ * indexed terms from DocValues.
  *
  * @lucene.experimental
  */
@@ -44,23 +43,24 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
   SortedDocValues groupFieldTermsIndex;
 
   /**
-   * Factory method for creating the right implementation based on the fact whether the facet field contains
-   * multiple tokens per documents.
+   * Factory method for creating the right implementation based on the fact whether the facet field
+   * contains multiple tokens per documents.
    *
    * @param groupField The group field
    * @param facetField The facet field
    * @param facetFieldMultivalued Whether the facet field has multiple tokens per document
    * @param facetPrefix The facet prefix a facet entry should start with to be included.
-   * @param initialSize The initial allocation size of the internal int set and group facet list which should roughly
-   *                    match the total number of expected unique groups. Be aware that the heap usage is
-   *                    4 bytes * initialSize.
+   * @param initialSize The initial allocation size of the internal int set and group facet list
+   *     which should roughly match the total number of expected unique groups. Be aware that the
+   *     heap usage is 4 bytes * initialSize.
    * @return <code>TermGroupFacetCollector</code> implementation
    */
-  public static TermGroupFacetCollector createTermGroupFacetCollector(String groupField,
-                                                                      String facetField,
-                                                                      boolean facetFieldMultivalued,
-                                                                      BytesRef facetPrefix,
-                                                                      int initialSize) {
+  public static TermGroupFacetCollector createTermGroupFacetCollector(
+      String groupField,
+      String facetField,
+      boolean facetFieldMultivalued,
+      BytesRef facetPrefix,
+      int initialSize) {
     if (facetFieldMultivalued) {
       return new MV(groupField, facetField, facetPrefix, initialSize);
     } else {
@@ -68,7 +68,8 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
     }
   }
 
-  TermGroupFacetCollector(String groupField, String facetField, BytesRef facetPrefix, int initialSize) {
+  TermGroupFacetCollector(
+      String groupField, String facetField, BytesRef facetPrefix, int initialSize) {
     super(groupField, facetField, facetPrefix);
     groupedFacetHits = new ArrayList<>(initialSize);
     segmentGroupedFacetHits = new SentinelIntSet(initialSize, Integer.MIN_VALUE);
@@ -95,7 +96,7 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
       } else {
         facetOrd = -1;
       }
-      
+
       if (facetOrd < startFacetOrd || facetOrd >= endFacetOrd) {
         return;
       }
@@ -110,13 +111,14 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
       } else {
         groupOrd = -1;
       }
-      int segmentGroupedFacetsIndex = groupOrd * (facetFieldTermsIndex.getValueCount()+1) + facetOrd;
+      int segmentGroupedFacetsIndex =
+          groupOrd * (facetFieldTermsIndex.getValueCount() + 1) + facetOrd;
       if (segmentGroupedFacetHits.exists(segmentGroupedFacetsIndex)) {
         return;
       }
 
       segmentTotalCount++;
-      segmentFacetCounts[facetOrd+1]++;
+      segmentFacetCounts[facetOrd + 1]++;
 
       segmentGroupedFacetHits.put(segmentGroupedFacetsIndex);
 
@@ -147,22 +149,29 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
       facetFieldTermsIndex = DocValues.getSorted(context.reader(), facetField);
 
       // 1+ to allow for the -1 "not set":
-      segmentFacetCounts = new int[facetFieldTermsIndex.getValueCount()+1];
+      segmentFacetCounts = new int[facetFieldTermsIndex.getValueCount() + 1];
       segmentTotalCount = 0;
 
       segmentGroupedFacetHits.clear();
       for (GroupedFacetHit groupedFacetHit : groupedFacetHits) {
-        int facetOrd = groupedFacetHit.facetValue == null ? -1 : facetFieldTermsIndex.lookupTerm(groupedFacetHit.facetValue);
+        int facetOrd =
+            groupedFacetHit.facetValue == null
+                ? -1
+                : facetFieldTermsIndex.lookupTerm(groupedFacetHit.facetValue);
         if (groupedFacetHit.facetValue != null && facetOrd < 0) {
           continue;
         }
 
-        int groupOrd = groupedFacetHit.groupValue == null ? -1 : groupFieldTermsIndex.lookupTerm(groupedFacetHit.groupValue);
+        int groupOrd =
+            groupedFacetHit.groupValue == null
+                ? -1
+                : groupFieldTermsIndex.lookupTerm(groupedFacetHit.groupValue);
         if (groupedFacetHit.groupValue != null && groupOrd < 0) {
           continue;
         }
 
-        int segmentGroupedFacetsIndex = groupOrd * (facetFieldTermsIndex.getValueCount()+1) + facetOrd;
+        int segmentGroupedFacetsIndex =
+            groupOrd * (facetFieldTermsIndex.getValueCount() + 1) + facetOrd;
         segmentGroupedFacetHits.put(segmentGroupedFacetsIndex);
       }
 
@@ -186,17 +195,23 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
 
     @Override
     protected SegmentResult createSegmentResult() throws IOException {
-      return new SegmentResult(segmentFacetCounts, segmentTotalCount, facetFieldTermsIndex.termsEnum(), startFacetOrd, endFacetOrd);
+      return new SegmentResult(
+          segmentFacetCounts,
+          segmentTotalCount,
+          facetFieldTermsIndex.termsEnum(),
+          startFacetOrd,
+          endFacetOrd);
     }
 
     private static class SegmentResult extends GroupFacetCollector.SegmentResult {
 
       final TermsEnum tenum;
 
-      SegmentResult(int[] counts, int total, TermsEnum tenum, int startFacetOrd, int endFacetOrd) throws IOException {
-        super(counts, total - counts[0], counts[0], endFacetOrd+1);
+      SegmentResult(int[] counts, int total, TermsEnum tenum, int startFacetOrd, int endFacetOrd)
+          throws IOException {
+        super(counts, total - counts[0], counts[0], endFacetOrd + 1);
         this.tenum = tenum;
-        this.mergePos = startFacetOrd == -1 ? 1 : startFacetOrd+1;
+        this.mergePos = startFacetOrd == -1 ? 1 : startFacetOrd + 1;
         if (mergePos < maxTermPos) {
           assert tenum != null;
           tenum.seekExact(startFacetOrd == -1 ? 0 : startFacetOrd);
@@ -234,7 +249,7 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
       } else {
         groupOrd = -1;
       }
-      
+
       if (facetFieldNumTerms == 0) {
         int segmentGroupedFacetsIndex = groupOrd * (facetFieldNumTerms + 1);
         if (facetPrefix != null || segmentGroupedFacetHits.exists(segmentGroupedFacetsIndex)) {
@@ -266,12 +281,14 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
           empty = false;
         }
       }
-      
+
       if (empty) {
-        process(groupOrd, facetFieldNumTerms); // this facet ord is reserved for docs not containing facet field.
+        process(
+            groupOrd,
+            facetFieldNumTerms); // this facet ord is reserved for docs not containing facet field.
       }
     }
-    
+
     private void process(int groupOrd, int facetOrd) throws IOException {
       if (facetOrd < startFacetOrd || facetOrd >= endFacetOrd) {
         return;
@@ -317,20 +334,25 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
       } else {
         facetOrdTermsEnum = facetFieldDocTermOrds.termsEnum();
       }
-      // [facetFieldNumTerms() + 1] for all possible facet values and docs not containing facet field
+      // [facetFieldNumTerms() + 1] for all possible facet values and docs not containing facet
+      // field
       segmentFacetCounts = new int[facetFieldNumTerms + 1];
       segmentTotalCount = 0;
 
       segmentGroupedFacetHits.clear();
       for (GroupedFacetHit groupedFacetHit : groupedFacetHits) {
-        int groupOrd = groupedFacetHit.groupValue == null ? -1 : groupFieldTermsIndex.lookupTerm(groupedFacetHit.groupValue);
+        int groupOrd =
+            groupedFacetHit.groupValue == null
+                ? -1
+                : groupFieldTermsIndex.lookupTerm(groupedFacetHit.groupValue);
         if (groupedFacetHit.groupValue != null && groupOrd < 0) {
           continue;
         }
 
         int facetOrd;
         if (groupedFacetHit.facetValue != null) {
-          if (facetOrdTermsEnum == null || !facetOrdTermsEnum.seekExact(groupedFacetHit.facetValue)) {
+          if (facetOrdTermsEnum == null
+              || !facetOrdTermsEnum.seekExact(groupedFacetHit.facetValue)) {
             continue;
           }
           facetOrd = (int) facetOrdTermsEnum.ord();
@@ -338,7 +360,8 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
           facetOrd = facetFieldNumTerms;
         }
 
-        // (facetFieldDocTermOrds.numTerms() + 1) for all possible facet values and docs not containing facet field
+        // (facetFieldDocTermOrds.numTerms() + 1) for all possible facet values and docs not
+        // containing facet field
         int segmentGroupedFacetsIndex = groupOrd * (facetFieldNumTerms + 1) + facetOrd;
         segmentGroupedFacetHits.put(segmentGroupedFacetsIndex);
       }
@@ -376,16 +399,32 @@ public abstract class TermGroupFacetCollector extends GroupFacetCollector {
 
     @Override
     protected SegmentResult createSegmentResult() throws IOException {
-      return new SegmentResult(segmentFacetCounts, segmentTotalCount, facetFieldNumTerms, facetOrdTermsEnum, startFacetOrd, endFacetOrd);
+      return new SegmentResult(
+          segmentFacetCounts,
+          segmentTotalCount,
+          facetFieldNumTerms,
+          facetOrdTermsEnum,
+          startFacetOrd,
+          endFacetOrd);
     }
 
     private static class SegmentResult extends GroupFacetCollector.SegmentResult {
 
       final TermsEnum tenum;
 
-      SegmentResult(int[] counts, int total, int missingCountIndex, TermsEnum tenum, int startFacetOrd, int endFacetOrd) throws IOException {
-        super(counts, total - counts[missingCountIndex], counts[missingCountIndex],
-            endFacetOrd == missingCountIndex + 1 ?  missingCountIndex : endFacetOrd);
+      SegmentResult(
+          int[] counts,
+          int total,
+          int missingCountIndex,
+          TermsEnum tenum,
+          int startFacetOrd,
+          int endFacetOrd)
+          throws IOException {
+        super(
+            counts,
+            total - counts[missingCountIndex],
+            counts[missingCountIndex],
+            endFacetOrd == missingCountIndex + 1 ? missingCountIndex : endFacetOrd);
         this.tenum = tenum;
         this.mergePos = startFacetOrd;
         if (tenum != null) {
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupSelector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupSelector.java
index 65213b2..802776e 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupSelector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TermGroupSelector.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.SortedDocValues;
@@ -29,9 +28,7 @@ import org.apache.lucene.search.Scorable;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefHash;
 
-/**
- * A GroupSelector implementation that groups via SortedDocValues
- */
+/** A GroupSelector implementation that groups via SortedDocValues */
 public class TermGroupSelector extends GroupSelector<BytesRef> {
 
   private final String field;
@@ -46,6 +43,7 @@ public class TermGroupSelector extends GroupSelector<BytesRef> {
 
   /**
    * Create a new TermGroupSelector
+   *
    * @param field the SortedDocValues field to use for grouping
    */
   public TermGroupSelector(String field) {
@@ -60,13 +58,14 @@ public class TermGroupSelector extends GroupSelector<BytesRef> {
     for (int i = 0; i < values.size(); i++) {
       values.get(i, scratch);
       int ord = this.docValues.lookupTerm(scratch);
-      if (ord >= 0)
+      if (ord >= 0) {
         ordsToGroupIds.put(ord, i);
+      }
     }
   }
 
   @Override
-  public void setScorer(Scorable scorer) throws IOException { }
+  public void setScorer(Scorable scorer) throws IOException {}
 
   @Override
   public State advanceTo(int doc) throws IOException {
@@ -79,8 +78,9 @@ public class TermGroupSelector extends GroupSelector<BytesRef> {
       groupId = ordsToGroupIds.get(ord);
       return State.ACCEPT;
     }
-    if (secondPass)
+    if (secondPass) {
       return State.SKIP;
+    }
     groupId = values.add(docValues.binaryValue());
     ordsToGroupIds.put(ord, groupId);
     return State.ACCEPT;
@@ -90,16 +90,18 @@ public class TermGroupSelector extends GroupSelector<BytesRef> {
 
   @Override
   public BytesRef currentValue() {
-    if (groupId == -1)
+    if (groupId == -1) {
       return null;
+    }
     values.get(groupId, scratch);
     return scratch;
   }
 
   @Override
   public BytesRef copyValue() {
-    if (groupId == -1)
+    if (groupId == -1) {
       return null;
+    }
     return BytesRef.deepCopyOf(currentValue());
   }
 
@@ -108,10 +110,11 @@ public class TermGroupSelector extends GroupSelector<BytesRef> {
     this.values.clear();
     this.values.reinit();
     for (SearchGroup<BytesRef> sg : searchGroups) {
-      if (sg.groupValue == null)
+      if (sg.groupValue == null) {
         includeEmpty = true;
-      else
+      } else {
         this.values.add(sg.groupValue);
+      }
     }
     this.secondPass = true;
   }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroups.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroups.java
index b14e675..3ceb388 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroups.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroups.java
@@ -24,9 +24,11 @@ import org.apache.lucene.search.TopFieldDocs;
 import org.apache.lucene.search.TotalHits;
 import org.apache.lucene.search.TotalHits.Relation;
 
-/** Represents result returned by a grouping search.
+/**
+ * Represents result returned by a grouping search.
  *
- * @lucene.experimental */
+ * @lucene.experimental
+ */
 public class TopGroups<T> {
   /** Number of documents matching the search */
   public final int totalHitCount;
@@ -46,11 +48,16 @@ public class TopGroups<T> {
   /** How docs are sorted within each group */
   public final SortField[] withinGroupSort;
 
-  /** Highest score across all hits, or
-   *  <code>Float.NaN</code> if scores were not computed. */
+  /** Highest score across all hits, or <code>Float.NaN</code> if scores were not computed. */
   public final float maxScore;
 
-  public TopGroups(SortField[] groupSort, SortField[] withinGroupSort, int totalHitCount, int totalGroupedHitCount, GroupDocs<T>[] groups, float maxScore) {
+  public TopGroups(
+      SortField[] groupSort,
+      SortField[] withinGroupSort,
+      int totalHitCount,
+      int totalGroupedHitCount,
+      GroupDocs<T>[] groups,
+      float maxScore) {
     this.groupSort = groupSort;
     this.withinGroupSort = withinGroupSort;
     this.totalHitCount = totalHitCount;
@@ -73,7 +80,7 @@ public class TopGroups<T> {
   /** How the GroupDocs score (if any) should be merged. */
   public enum ScoreMergeMode {
     /** Set score to Float.NaN */
-    None,     
+    None,
     /* Sum score across all shards for this group. */
     Total,
     /* Avg score across all shards for this group. */
@@ -81,8 +88,9 @@ public class TopGroups<T> {
   }
 
   /**
-   * If either value is NaN then return the other value, otherwise
-   * return the greater of the two values by calling Math.max.
+   * If either value is NaN then return the other value, otherwise return the greater of the two
+   * values by calling Math.max.
+   *
    * @param a - one value
    * @param b - another value
    * @return ignoring any NaN return the greater of a and b
@@ -93,26 +101,27 @@ public class TopGroups<T> {
     return Math.max(a, b);
   }
 
-  /** Merges an array of TopGroups, for example obtained
-   *  from the second-pass collector across multiple
-   *  shards.  Each TopGroups must have been sorted by the
-   *  same groupSort and docSort, and the top groups passed
-   *  to all second-pass collectors must be the same.
+  /**
+   * Merges an array of TopGroups, for example obtained from the second-pass collector across
+   * multiple shards. Each TopGroups must have been sorted by the same groupSort and docSort, and
+   * the top groups passed to all second-pass collectors must be the same.
    *
-   * <b>NOTE</b>: We can't always compute an exact totalGroupCount.
-   * Documents belonging to a group may occur on more than
-   * one shard and thus the merged totalGroupCount can be
-   * higher than the actual totalGroupCount. In this case the
-   * totalGroupCount represents a upper bound. If the documents
-   * of one group do only reside in one shard then the
-   * totalGroupCount is exact.
+   * <p><b>NOTE</b>: We can't always compute an exact totalGroupCount. Documents belonging to a
+   * group may occur on more than one shard and thus the merged totalGroupCount can be higher than
+   * the actual totalGroupCount. In this case the totalGroupCount represents a upper bound. If the
+   * documents of one group do only reside in one shard then the totalGroupCount is exact.
    *
-   * <b>NOTE</b>: the topDocs in each GroupDocs is actually
-   * an instance of TopDocsAndShards
+   * <p><b>NOTE</b>: the topDocs in each GroupDocs is actually an instance of TopDocsAndShards
    */
-  public static <T> TopGroups<T> merge(TopGroups<T>[] shardGroups, Sort groupSort, Sort docSort, int docOffset, int docTopN, ScoreMergeMode scoreMergeMode) {
+  public static <T> TopGroups<T> merge(
+      TopGroups<T>[] shardGroups,
+      Sort groupSort,
+      Sort docSort,
+      int docOffset,
+      int docTopN,
+      ScoreMergeMode scoreMergeMode) {
 
-    //System.out.println("TopGroups.merge");
+    // System.out.println("TopGroups.merge");
 
     if (shardGroups.length == 0) {
       return null;
@@ -124,9 +133,10 @@ public class TopGroups<T> {
     Integer totalGroupCount = null;
 
     final int numGroups = shardGroups[0].groups.length;
-    for(TopGroups<T> shard : shardGroups) {
+    for (TopGroups<T> shard : shardGroups) {
       if (numGroups != shard.groups.length) {
-        throw new IllegalArgumentException("number of groups differs across shards; you must pass same top groups to all shards' second-pass collector");
+        throw new IllegalArgumentException(
+            "number of groups differs across shards; you must pass same top groups to all shards' second-pass collector");
       }
       totalHitCount += shard.totalHitCount;
       totalGroupedHitCount += shard.totalGroupedHitCount;
@@ -139,7 +149,7 @@ public class TopGroups<T> {
       }
     }
 
-    @SuppressWarnings({"unchecked","rawtypes"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     final GroupDocs<T>[] mergedGroupDocs = new GroupDocs[numGroups];
 
     final TopDocs[] shardTopDocs;
@@ -150,22 +160,25 @@ public class TopGroups<T> {
     }
     float totalMaxScore = Float.NaN;
 
-    for(int groupIDX=0;groupIDX<numGroups;groupIDX++) {
+    for (int groupIDX = 0; groupIDX < numGroups; groupIDX++) {
       final T groupValue = shardGroups[0].groups[groupIDX].groupValue;
-      //System.out.println("  merge groupValue=" + groupValue + " sortValues=" + Arrays.toString(shardGroups[0].groups[groupIDX].groupSortValues));
+      // System.out.println("  merge groupValue=" + groupValue + " sortValues=" +
+      // Arrays.toString(shardGroups[0].groups[groupIDX].groupSortValues));
       float maxScore = Float.NaN;
       int totalHits = 0;
       double scoreSum = 0.0;
-      for(int shardIDX=0;shardIDX<shardGroups.length;shardIDX++) {
-        //System.out.println("    shard=" + shardIDX);
+      for (int shardIDX = 0; shardIDX < shardGroups.length; shardIDX++) {
+        // System.out.println("    shard=" + shardIDX);
         final TopGroups<T> shard = shardGroups[shardIDX];
         final GroupDocs<?> shardGroupDocs = shard.groups[groupIDX];
         if (groupValue == null) {
           if (shardGroupDocs.groupValue != null) {
-            throw new IllegalArgumentException("group values differ across shards; you must pass same top groups to all shards' second-pass collector");
+            throw new IllegalArgumentException(
+                "group values differ across shards; you must pass same top groups to all shards' second-pass collector");
           }
         } else if (!groupValue.equals(shardGroupDocs.groupValue)) {
-          throw new IllegalArgumentException("group values differ across shards; you must pass same top groups to all shards' second-pass collector");
+          throw new IllegalArgumentException(
+              "group values differ across shards; you must pass same top groups to all shards' second-pass collector");
         }
 
         /*
@@ -175,19 +188,18 @@ public class TopGroups<T> {
         */
 
         if (docSort.equals(Sort.RELEVANCE)) {
-          shardTopDocs[shardIDX] = new TopDocs(shardGroupDocs.totalHits,
-                                               shardGroupDocs.scoreDocs);
+          shardTopDocs[shardIDX] = new TopDocs(shardGroupDocs.totalHits, shardGroupDocs.scoreDocs);
         } else {
-          shardTopDocs[shardIDX] = new TopFieldDocs(shardGroupDocs.totalHits,
-              shardGroupDocs.scoreDocs,
-              docSort.getSort());
+          shardTopDocs[shardIDX] =
+              new TopFieldDocs(
+                  shardGroupDocs.totalHits, shardGroupDocs.scoreDocs, docSort.getSort());
         }
 
         for (int i = 0; i < shardTopDocs[shardIDX].scoreDocs.length; i++) {
           shardTopDocs[shardIDX].scoreDocs[i].shardIndex = shardIDX;
         }
 
-        maxScore =  nonNANmax(maxScore, shardGroupDocs.maxScore);
+        maxScore = nonNANmax(maxScore, shardGroupDocs.maxScore);
         assert shardGroupDocs.totalHits.relation == Relation.EQUAL_TO;
         totalHits += shardGroupDocs.totalHits.value;
         scoreSum += shardGroupDocs.score;
@@ -208,57 +220,63 @@ public class TopGroups<T> {
         mergedScoreDocs = new ScoreDoc[0];
       } else {
         mergedScoreDocs = new ScoreDoc[mergedTopDocs.scoreDocs.length - docOffset];
-        System.arraycopy(mergedTopDocs.scoreDocs,
-                         docOffset,
-                         mergedScoreDocs,
-                         0,
-                         mergedTopDocs.scoreDocs.length - docOffset);
+        System.arraycopy(
+            mergedTopDocs.scoreDocs,
+            docOffset,
+            mergedScoreDocs,
+            0,
+            mergedTopDocs.scoreDocs.length - docOffset);
       }
 
       final float groupScore;
-      switch(scoreMergeMode) {
-      case None:
-        groupScore = Float.NaN;
-        break;
-      case Avg:
-        if (totalHits > 0) {
-          groupScore = (float) (scoreSum / totalHits);
-        } else {
+      switch (scoreMergeMode) {
+        case None:
           groupScore = Float.NaN;
-        }
-        break;
-      case Total:
-        groupScore = (float) scoreSum;
-        break;
-      default:
-        throw new IllegalArgumentException("can't handle ScoreMergeMode " + scoreMergeMode);
+          break;
+        case Avg:
+          if (totalHits > 0) {
+            groupScore = (float) (scoreSum / totalHits);
+          } else {
+            groupScore = Float.NaN;
+          }
+          break;
+        case Total:
+          groupScore = (float) scoreSum;
+          break;
+        default:
+          throw new IllegalArgumentException("can't handle ScoreMergeMode " + scoreMergeMode);
       }
-        
-      //System.out.println("SHARDS=" + Arrays.toString(mergedTopDocs.shardIndex));
-      mergedGroupDocs[groupIDX] = new GroupDocs<>(groupScore,
-                                                   maxScore,
-                                                   new TotalHits(totalHits, TotalHits.Relation.EQUAL_TO),
-                                                   mergedScoreDocs,
-                                                   groupValue,
-                                                   shardGroups[0].groups[groupIDX].groupSortValues);
+
+      // System.out.println("SHARDS=" + Arrays.toString(mergedTopDocs.shardIndex));
+      mergedGroupDocs[groupIDX] =
+          new GroupDocs<>(
+              groupScore,
+              maxScore,
+              new TotalHits(totalHits, TotalHits.Relation.EQUAL_TO),
+              mergedScoreDocs,
+              groupValue,
+              shardGroups[0].groups[groupIDX].groupSortValues);
       totalMaxScore = nonNANmax(totalMaxScore, maxScore);
     }
 
     if (totalGroupCount != null) {
-      TopGroups<T> result = new TopGroups<>(groupSort.getSort(),
-                              docSort.getSort(),
-                              totalHitCount,
-                              totalGroupedHitCount,
-                              mergedGroupDocs,
-                              totalMaxScore);
+      TopGroups<T> result =
+          new TopGroups<>(
+              groupSort.getSort(),
+              docSort.getSort(),
+              totalHitCount,
+              totalGroupedHitCount,
+              mergedGroupDocs,
+              totalMaxScore);
       return new TopGroups<>(result, totalGroupCount);
     } else {
-      return new TopGroups<>(groupSort.getSort(),
-                              docSort.getSort(),
-                              totalHitCount,
-                              totalGroupedHitCount,
-                              mergedGroupDocs,
-                              totalMaxScore);
+      return new TopGroups<>(
+          groupSort.getSort(),
+          docSort.getSort(),
+          totalHitCount,
+          totalGroupedHitCount,
+          mergedGroupDocs,
+          totalMaxScore);
     }
   }
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroupsCollector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroupsCollector.java
index 01e9928..b3cbb25 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroupsCollector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/TopGroupsCollector.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.Objects;
 import java.util.function.Supplier;
-
 import org.apache.lucene.search.FilterCollector;
 import org.apache.lucene.search.MultiCollector;
 import org.apache.lucene.search.Scorable;
@@ -36,8 +35,8 @@ import org.apache.lucene.search.TopScoreDocCollector;
 import org.apache.lucene.util.ArrayUtil;
 
 /**
- * A second-pass collector that collects the TopDocs for each group, and
- * returns them as a {@link TopGroups} object
+ * A second-pass collector that collects the TopDocs for each group, and returns them as a {@link
+ * TopGroups} object
  *
  * @param <T> the type of the group value
  */
@@ -49,21 +48,28 @@ public class TopGroupsCollector<T> extends SecondPassGroupingCollector<T> {
 
   /**
    * Create a new TopGroupsCollector
-   * @param groupSelector     the group selector used to define groups
-   * @param groups            the groups to collect TopDocs for
-   * @param groupSort         the order in which groups are returned
-   * @param withinGroupSort   the order in which documents are sorted in each group
-   * @param maxDocsPerGroup   the maximum number of docs to collect for each group
-   * @param getMaxScores      if true, record the maximum score for each group
+   *
+   * @param groupSelector the group selector used to define groups
+   * @param groups the groups to collect TopDocs for
+   * @param groupSort the order in which groups are returned
+   * @param withinGroupSort the order in which documents are sorted in each group
+   * @param maxDocsPerGroup the maximum number of docs to collect for each group
+   * @param getMaxScores if true, record the maximum score for each group
    */
-  public TopGroupsCollector(GroupSelector<T> groupSelector, Collection<SearchGroup<T>> groups, Sort groupSort, Sort withinGroupSort,
-                            int maxDocsPerGroup, boolean getMaxScores) {
-    super(groupSelector, groups,
+  public TopGroupsCollector(
+      GroupSelector<T> groupSelector,
+      Collection<SearchGroup<T>> groups,
+      Sort groupSort,
+      Sort withinGroupSort,
+      int maxDocsPerGroup,
+      boolean getMaxScores) {
+    super(
+        groupSelector,
+        groups,
         new TopDocsReducer<>(withinGroupSort, maxDocsPerGroup, getMaxScores));
     this.groupSort = Objects.requireNonNull(groupSort);
     this.withinGroupSort = Objects.requireNonNull(withinGroupSort);
     this.maxDocsPerGroup = maxDocsPerGroup;
-
   }
 
   private static class MaxScoreCollector extends SimpleCollector {
@@ -98,8 +104,11 @@ public class TopGroupsCollector<T> extends SecondPassGroupingCollector<T> {
     private final TopDocsCollector<?> topDocsCollector;
     private final MaxScoreCollector maxScoreCollector;
     private final boolean sortedByScore;
-    
-    public TopDocsAndMaxScoreCollector(boolean sortedByScore, TopDocsCollector<?> topDocsCollector, MaxScoreCollector maxScoreCollector) {
+
+    public TopDocsAndMaxScoreCollector(
+        boolean sortedByScore,
+        TopDocsCollector<?> topDocsCollector,
+        MaxScoreCollector maxScoreCollector) {
       super(MultiCollector.wrap(topDocsCollector, maxScoreCollector));
       this.sortedByScore = sortedByScore;
       this.topDocsCollector = topDocsCollector;
@@ -112,17 +121,24 @@ public class TopGroupsCollector<T> extends SecondPassGroupingCollector<T> {
     private final Supplier<TopDocsAndMaxScoreCollector> supplier;
     private final boolean needsScores;
 
-    TopDocsReducer(Sort withinGroupSort,
-                   int maxDocsPerGroup, boolean getMaxScores) {
+    TopDocsReducer(Sort withinGroupSort, int maxDocsPerGroup, boolean getMaxScores) {
       this.needsScores = getMaxScores || withinGroupSort.needsScores();
       if (withinGroupSort == Sort.RELEVANCE) {
-        supplier = () -> new TopDocsAndMaxScoreCollector(true, TopScoreDocCollector.create(maxDocsPerGroup, Integer.MAX_VALUE), null);
+        supplier =
+            () ->
+                new TopDocsAndMaxScoreCollector(
+                    true, TopScoreDocCollector.create(maxDocsPerGroup, Integer.MAX_VALUE), null);
       } else {
-        supplier = () -> {
-          TopFieldCollector topDocsCollector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, Integer.MAX_VALUE); // TODO: disable exact counts?
-          MaxScoreCollector maxScoreCollector = getMaxScores ? new MaxScoreCollector() : null;
-          return new TopDocsAndMaxScoreCollector(false, topDocsCollector, maxScoreCollector);
-        };
+        supplier =
+            () -> {
+              TopFieldCollector topDocsCollector =
+                  TopFieldCollector.create(
+                      withinGroupSort,
+                      maxDocsPerGroup,
+                      Integer.MAX_VALUE); // TODO: disable exact counts?
+              MaxScoreCollector maxScoreCollector = getMaxScores ? new MaxScoreCollector() : null;
+              return new TopDocsAndMaxScoreCollector(false, topDocsCollector, maxScoreCollector);
+            };
       }
     }
 
@@ -139,25 +155,34 @@ public class TopGroupsCollector<T> extends SecondPassGroupingCollector<T> {
 
   /**
    * Get the TopGroups recorded by this collector
+   *
    * @param withinGroupOffset the offset within each group to start collecting documents
    */
   public TopGroups<T> getTopGroups(int withinGroupOffset) {
-    @SuppressWarnings({"unchecked","rawtypes"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     final GroupDocs<T>[] groupDocsResult = (GroupDocs<T>[]) new GroupDocs[groups.size()];
 
     int groupIDX = 0;
     float maxScore = Float.MIN_VALUE;
-    for(SearchGroup<T> group : groups) {
-      TopDocsAndMaxScoreCollector collector = (TopDocsAndMaxScoreCollector) groupReducer.getCollector(group.groupValue);
+    for (SearchGroup<T> group : groups) {
+      TopDocsAndMaxScoreCollector collector =
+          (TopDocsAndMaxScoreCollector) groupReducer.getCollector(group.groupValue);
       final TopDocs topDocs;
       final float groupMaxScore;
       if (collector.sortedByScore) {
         TopDocs allTopDocs = collector.topDocsCollector.topDocs();
-        groupMaxScore = allTopDocs.scoreDocs.length == 0 ? Float.NaN : allTopDocs.scoreDocs[0].score;
+        groupMaxScore =
+            allTopDocs.scoreDocs.length == 0 ? Float.NaN : allTopDocs.scoreDocs[0].score;
         if (allTopDocs.scoreDocs.length <= withinGroupOffset) {
           topDocs = new TopDocs(allTopDocs.totalHits, new ScoreDoc[0]);
         } else {
-          topDocs = new TopDocs(allTopDocs.totalHits, ArrayUtil.copyOfSubArray(allTopDocs.scoreDocs, withinGroupOffset, Math.min(allTopDocs.scoreDocs.length, withinGroupOffset + maxDocsPerGroup)));
+          topDocs =
+              new TopDocs(
+                  allTopDocs.totalHits,
+                  ArrayUtil.copyOfSubArray(
+                      allTopDocs.scoreDocs,
+                      withinGroupOffset,
+                      Math.min(allTopDocs.scoreDocs.length, withinGroupOffset + maxDocsPerGroup)));
         }
       } else {
         topDocs = collector.topDocsCollector.topDocs(withinGroupOffset, maxDocsPerGroup);
@@ -167,21 +192,24 @@ public class TopGroupsCollector<T> extends SecondPassGroupingCollector<T> {
           groupMaxScore = collector.maxScoreCollector.getMaxScore();
         }
       }
-      
-      groupDocsResult[groupIDX++] = new GroupDocs<>(Float.NaN,
-          groupMaxScore,
-          topDocs.totalHits,
-          topDocs.scoreDocs,
-          group.groupValue,
-          group.sortValues);
+
+      groupDocsResult[groupIDX++] =
+          new GroupDocs<>(
+              Float.NaN,
+              groupMaxScore,
+              topDocs.totalHits,
+              topDocs.scoreDocs,
+              group.groupValue,
+              group.sortValues);
       maxScore = Math.max(maxScore, groupMaxScore);
     }
 
-    return new TopGroups<>(groupSort.getSort(),
+    return new TopGroups<>(
+        groupSort.getSort(),
         withinGroupSort.getSort(),
-        totalHitCount, totalGroupedHitCount, groupDocsResult,
+        totalHitCount,
+        totalGroupedHitCount,
+        groupDocsResult,
         maxScore);
   }
-
-
 }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/ValueSourceGroupSelector.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/ValueSourceGroupSelector.java
index 54373de..63e95d8 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/ValueSourceGroupSelector.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/ValueSourceGroupSelector.java
@@ -22,16 +22,13 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.queries.function.FunctionValues;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.search.Scorable;
 import org.apache.lucene.util.mutable.MutableValue;
 
-/**
- * A GroupSelector that groups via a ValueSource
- */
+/** A GroupSelector that groups via a ValueSource */
 public class ValueSourceGroupSelector extends GroupSelector<MutableValue> {
 
   private final ValueSource valueSource;
@@ -41,8 +38,9 @@ public class ValueSourceGroupSelector extends GroupSelector<MutableValue> {
 
   /**
    * Create a new ValueSourceGroupSelector
+   *
    * @param valueSource the ValueSource to group by
-   * @param context     a context map for the ValueSource
+   * @param context a context map for the ValueSource
    */
   public ValueSourceGroupSelector(ValueSource valueSource, Map<Object, Object> context) {
     this.valueSource = valueSource;
@@ -58,14 +56,15 @@ public class ValueSourceGroupSelector extends GroupSelector<MutableValue> {
   }
 
   @Override
-  public void setScorer(Scorable scorer) throws IOException { }
+  public void setScorer(Scorable scorer) throws IOException {}
 
   @Override
   public State advanceTo(int doc) throws IOException {
     this.filler.fillValue(doc);
     if (secondPassGroups != null) {
-      if (secondPassGroups.contains(filler.getValue()) == false)
+      if (secondPassGroups.contains(filler.getValue()) == false) {
         return State.SKIP;
+      }
     }
     return State.ACCEPT;
   }
diff --git a/lucene/grouping/src/java/org/apache/lucene/search/grouping/package-info.java b/lucene/grouping/src/java/org/apache/lucene/search/grouping/package-info.java
index 36d94a5..5c1b124 100644
--- a/lucene/grouping/src/java/org/apache/lucene/search/grouping/package-info.java
+++ b/lucene/grouping/src/java/org/apache/lucene/search/grouping/package-info.java
@@ -15,143 +15,125 @@
  * limitations under the License.
  */
 
-/** 
+/**
  * Grouping.
- * <p>
- * This module enables search result grouping with Lucene, where hits
- * with the same value in the specified single-valued group field are
- * grouped together.  For example, if you group by the <code>author</code>
- * field, then all documents with the same value in the <code>author</code>
- * field fall into a single group.
- * </p>
- * 
- * <p>Grouping requires a number of inputs:</p>
- * 
+ *
+ * <p>This module enables search result grouping with Lucene, where hits with the same value in the
+ * specified single-valued group field are grouped together. For example, if you group by the <code>
+ * author</code> field, then all documents with the same value in the <code>author</code> field fall
+ * into a single group.
+ *
+ * <p>Grouping requires a number of inputs:
+ *
  * <ul>
- *   <li><code>groupSelector</code>: this defines how groups are created
- *       from values per-document.  The grouping module ships with
- *       selectors for grouping by term, and by long and double ranges.
- * 
- *   <li><code>groupSort</code>: how the groups are sorted.  For sorting
- *       purposes, each group is "represented" by the highest-sorted
- *       document according to the <code>groupSort</code> within it.  For
- *       example, if you specify "price" (ascending) then the first group
- *       is the one with the lowest price book within it.  Or if you
- *       specify relevance group sort, then the first group is the one
- *       containing the highest scoring book.
- * 
- *   <li><code>topNGroups</code>: how many top groups to keep.  For
- *       example, 10 means the top 10 groups are computed.
- * 
- *   <li><code>groupOffset</code>: which "slice" of top groups you want to
- *       retrieve.  For example, 3 means you'll get 7 groups back
- *       (assuming <code>topNGroups</code> is 10).  This is useful for
+ *   <li><code>groupSelector</code>: this defines how groups are created from values per-document.
+ *       The grouping module ships with selectors for grouping by term, and by long and double
+ *       ranges.
+ *   <li><code>groupSort</code>: how the groups are sorted. For sorting purposes, each group is
+ *       "represented" by the highest-sorted document according to the <code>groupSort</code> within
+ *       it. For example, if you specify "price" (ascending) then the first group is the one with
+ *       the lowest price book within it. Or if you specify relevance group sort, then the first
+ *       group is the one containing the highest scoring book.
+ *   <li><code>topNGroups</code>: how many top groups to keep. For example, 10 means the top 10
+ *       groups are computed.
+ *   <li><code>groupOffset</code>: which "slice" of top groups you want to retrieve. For example, 3
+ *       means you'll get 7 groups back (assuming <code>topNGroups</code> is 10). This is useful for
  *       paging, where you might show 5 groups per page.
- * 
- *   <li><code>withinGroupSort</code>: how the documents within each group
- *       are sorted.  This can be different from the group sort.
- * 
- *   <li><code>maxDocsPerGroup</code>: how many top documents within each
- *       group to keep.
- * 
- *   <li><code>withinGroupOffset</code>: which "slice" of top
- *       documents you want to retrieve from each group.
- * 
+ *   <li><code>withinGroupSort</code>: how the documents within each group are sorted. This can be
+ *       different from the group sort.
+ *   <li><code>maxDocsPerGroup</code>: how many top documents within each group to keep.
+ *   <li><code>withinGroupOffset</code>: which "slice" of top documents you want to retrieve from
+ *       each group.
  * </ul>
- * 
+ *
  * <p>The implementation is two-pass: the first pass ({@link
- *   org.apache.lucene.search.grouping.FirstPassGroupingCollector})
- *   gathers the top groups, and the second pass ({@link
- *   org.apache.lucene.search.grouping.SecondPassGroupingCollector})
- *   gathers documents within those groups.  If the search is costly to
- *   run you may want to use the {@link
- *   org.apache.lucene.search.CachingCollector} class, which
- *   caches hits and can (quickly) replay them for the second pass.  This
- *   way you only run the query once, but you pay a RAM cost to (briefly)
- *   hold all hits.  Results are returned as a {@link
- *   org.apache.lucene.search.grouping.TopGroups} instance.</p>
- * 
- * <p>Groups are defined by {@link org.apache.lucene.search.grouping.GroupSelector}
- *   implementations:</p>
- *   <ul>
- *     <li>{@link org.apache.lucene.search.grouping.TermGroupSelector} groups based on
- *     the value of a {@link org.apache.lucene.index.SortedDocValues} field</li>
- *     <li>{@link org.apache.lucene.search.grouping.ValueSourceGroupSelector} groups based on
- *     the value of a {@link org.apache.lucene.queries.function.ValueSource}</li>
- *     <li>{@link org.apache.lucene.search.grouping.DoubleRangeGroupSelector} groups based on
- *     the value of a {@link org.apache.lucene.search.DoubleValuesSource}</li>
- *     <li>{@link org.apache.lucene.search.grouping.LongRangeGroupSelector} groups based on
- *     the value of a {@link org.apache.lucene.search.LongValuesSource}</li>
- *   </ul>
- * 
- * <p>Known limitations:</p>
+ * org.apache.lucene.search.grouping.FirstPassGroupingCollector}) gathers the top groups, and the
+ * second pass ({@link org.apache.lucene.search.grouping.SecondPassGroupingCollector}) gathers
+ * documents within those groups. If the search is costly to run you may want to use the {@link
+ * org.apache.lucene.search.CachingCollector} class, which caches hits and can (quickly) replay them
+ * for the second pass. This way you only run the query once, but you pay a RAM cost to (briefly)
+ * hold all hits. Results are returned as a {@link org.apache.lucene.search.grouping.TopGroups}
+ * instance.
+ *
+ * <p>Groups are defined by {@link org.apache.lucene.search.grouping.GroupSelector} implementations:
+ *
  * <ul>
- *   <li> Sharding is not directly supported, though is not too
- *     difficult, if you can merge the top groups and top documents per
- *     group yourself.
+ *   <li>{@link org.apache.lucene.search.grouping.TermGroupSelector} groups based on the value of a
+ *       {@link org.apache.lucene.index.SortedDocValues} field
+ *   <li>{@link org.apache.lucene.search.grouping.ValueSourceGroupSelector} groups based on the
+ *       value of a {@link org.apache.lucene.queries.function.ValueSource}
+ *   <li>{@link org.apache.lucene.search.grouping.DoubleRangeGroupSelector} groups based on the
+ *       value of a {@link org.apache.lucene.search.DoubleValuesSource}
+ *   <li>{@link org.apache.lucene.search.grouping.LongRangeGroupSelector} groups based on the value
+ *       of a {@link org.apache.lucene.search.LongValuesSource}
  * </ul>
- * 
- * <p>Typical usage for the generic two-pass grouping search looks like this using the grouping convenience utility
- *   (optionally using caching for the second pass search):</p>
- * 
+ *
+ * <p>Known limitations:
+ *
+ * <ul>
+ *   <li>Sharding is not directly supported, though is not too difficult, if you can merge the top
+ *       groups and top documents per group yourself.
+ * </ul>
+ *
+ * <p>Typical usage for the generic two-pass grouping search looks like this using the grouping
+ * convenience utility (optionally using caching for the second pass search):
+ *
  * <pre class="prettyprint">
  *   GroupingSearch groupingSearch = new GroupingSearch("author");
  *   groupingSearch.setGroupSort(groupSort);
  *   groupingSearch.setFillSortFields(fillFields);
- * 
+ *
  *   if (useCache) {
  *     // Sets cache in MB
  *     groupingSearch.setCachingInMB(4.0, true);
  *   }
- * 
+ *
  *   if (requiredTotalGroupCount) {
  *     groupingSearch.setAllGroups(true);
  *   }
- * 
+ *
  *   TermQuery query = new TermQuery(new Term("content", searchTerm));
  *   TopGroups&lt;BytesRef&gt; result = groupingSearch.search(indexSearcher, query, groupOffset, groupLimit);
- * 
+ *
  *   // Render groupsResult...
  *   if (requiredTotalGroupCount) {
  *     int totalGroupCount = result.totalGroupCount;
  *   }
  * </pre>
- * 
- * <p>To use the single-pass <code>BlockGroupingCollector</code>,
- *    first, at indexing time, you must ensure all docs in each group
- *    are added as a block, and you have some way to find the last
- *    document of each group.  One simple way to do this is to add a
- *    marker binary field:</p>
- * 
+ *
+ * <p>To use the single-pass <code>BlockGroupingCollector</code>, first, at indexing time, you must
+ * ensure all docs in each group are added as a block, and you have some way to find the last
+ * document of each group. One simple way to do this is to add a marker binary field:
+ *
  * <pre class="prettyprint">
  *   // Create Documents from your source:
  *   List&lt;Document&gt; oneGroup = ...;
- *   
+ *
  *   Field groupEndField = new Field("groupEnd", "x", Field.Store.NO, Field.Index.NOT_ANALYZED);
  *   groupEndField.setIndexOptions(IndexOptions.DOCS_ONLY);
  *   groupEndField.setOmitNorms(true);
  *   oneGroup.get(oneGroup.size()-1).add(groupEndField);
- * 
+ *
  *   // You can also use writer.updateDocuments(); just be sure you
  *   // replace an entire previous doc block with this new one.  For
  *   // example, each group could have a "groupID" field, with the same
  *   // value for all docs in this group:
  *   writer.addDocuments(oneGroup);
  * </pre>
- * 
+ *
  * Then, at search time:
- * 
+ *
  * <pre class="prettyprint">
  *   Query groupEndDocs = new TermQuery(new Term("groupEnd", "x"));
  *   BlockGroupingCollector c = new BlockGroupingCollector(groupSort, groupOffset+topNGroups, needsScores, groupEndDocs);
  *   s.search(new TermQuery(new Term("content", searchTerm)), c);
  *   TopGroups groupsResult = c.getTopGroups(withinGroupSort, groupOffset, docOffset, docOffset+docsPerGroup, fillFields);
- * 
+ *
  *   // Render groupsResult...
  * </pre>
- * 
+ *
  * Or alternatively use the <code>GroupingSearch</code> convenience utility:
- * 
+ *
  * <pre class="prettyprint">
  *   // Per search:
  *   GroupingSearch groupingSearch = new GroupingSearch(groupEndDocs);
@@ -162,18 +144,18 @@
  *
  *   // Render groupsResult...
  * </pre>
- * 
- * Note that the <code>groupValue</code> of each <code>GroupDocs</code>
- * will be <code>null</code>, so if you need to present this value you'll
- * have to separately retrieve it (for example using stored
- * fields, <code>FieldCache</code>, etc.).
- * 
- * <p>Another collector is the <code>AllGroupHeadsCollector</code> that can be used to retrieve all most relevant
- *    documents per group. Also known as group heads. This can be useful in situations when one wants to compute group
- *    based facets / statistics on the complete query result. The collector can be executed during the first or second
- *    phase. This collector can also be used with the <code>GroupingSearch</code> convenience utility, but when if one only
- *    wants to compute the most relevant documents per group it is better to just use the collector as done here below.</p>
- * 
+ *
+ * Note that the <code>groupValue</code> of each <code>GroupDocs</code> will be <code>null</code>,
+ * so if you need to present this value you'll have to separately retrieve it (for example using
+ * stored fields, <code>FieldCache</code>, etc.).
+ *
+ * <p>Another collector is the <code>AllGroupHeadsCollector</code> that can be used to retrieve all
+ * most relevant documents per group. Also known as group heads. This can be useful in situations
+ * when one wants to compute group based facets / statistics on the complete query result. The
+ * collector can be executed during the first or second phase. This collector can also be used with
+ * the <code>GroupingSearch</code> convenience utility, but when if one only wants to compute the
+ * most relevant documents per group it is better to just use the collector as done here below.
+ *
  * <pre class="prettyprint">
  *   TermGroupSelector grouper = new TermGroupSelector(groupField);
  *   AllGroupHeadsCollector c = AllGroupHeadsCollector.newCollector(grouper, sortWithinGroup);
@@ -184,6 +166,5 @@
  *   int maxDoc = s.maxDoc();
  *   FixedBitSet groupHeadsBitSet = c.retrieveGroupHeads(maxDoc)
  * </pre>
- *
  */
 package org.apache.lucene.search.grouping;
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/AbstractGroupingTestCase.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/AbstractGroupingTestCase.java
index e256667..0156acb 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/AbstractGroupingTestCase.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/AbstractGroupingTestCase.java
@@ -18,7 +18,6 @@ package org.apache.lucene.search.grouping;
 
 import java.io.Closeable;
 import java.io.IOException;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.search.IndexSearcher;
@@ -28,10 +27,9 @@ import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.TestUtil;
 
-/**
- * Base class for grouping related tests.
- */
-// TODO (MvG) : The grouping tests contain a lot of code duplication. Try to move the common code to this class..
+/** Base class for grouping related tests. */
+// TODO (MvG) : The grouping tests contain a lot of code duplication. Try to move the common code to
+// this class..
 public abstract class AbstractGroupingTestCase extends LuceneTestCase {
 
   protected String generateRandomNonEmptyString() {
@@ -41,7 +39,7 @@ public abstract class AbstractGroupingTestCase extends LuceneTestCase {
       // For that reason we don't generate empty string
       // groups.
       randomValue = TestUtil.randomRealisticUnicodeString(random());
-      //randomValue = _TestUtil.randomSimpleString(random());
+      // randomValue = _TestUtil.randomSimpleString(random());
     } while ("".equals(randomValue));
     return randomValue;
   }
@@ -62,8 +60,11 @@ public abstract class AbstractGroupingTestCase extends LuceneTestCase {
 
     Shard() throws IOException {
       this.directory = newDirectory();
-      this.writer = new RandomIndexWriter(random(), directory,
-          newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+      this.writer =
+          new RandomIndexWriter(
+              random(),
+              directory,
+              newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
     }
 
     IndexSearcher getIndexSearcher() throws IOException {
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/BaseGroupSelectorTestCase.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/BaseGroupSelectorTestCase.java
index bb2a946..d3e84af 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/BaseGroupSelectorTestCase.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/BaseGroupSelectorTestCase.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.NumericDocValuesField;
@@ -54,7 +53,7 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     Shard shard = new Shard();
     indexRandomDocs(shard.writer);
 
-    String[] query = new String[]{ "foo", "bar", "baz" };
+    String[] query = new String[] {"foo", "bar", "baz"};
     Query topLevel = new TermQuery(new Term("text", query[random().nextInt(query.length)]));
 
     IndexSearcher searcher = shard.getIndexSearcher();
@@ -65,10 +64,11 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     for (int i = 0; i < topGroups.groups.length; i++) {
       // Each group should have a result set equal to that returned by the top-level query,
       // filtered by the group value.
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(filterQuery(topGroups.groups[i].groupValue), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(filterQuery(topGroups.groups[i].groupValue), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 10);
       assertScoreDocsEquals(topGroups.groups[i].scoreDocs, td.scoreDocs);
       if (i == 0) {
@@ -86,12 +86,15 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     indexRandomDocs(shard.writer);
     IndexSearcher searcher = shard.getIndexSearcher();
 
-    String[] query = new String[]{ "foo", "bar", "baz" };
+    String[] query = new String[] {"foo", "bar", "baz"};
     Query topLevel = new TermQuery(new Term("text", query[random().nextInt(query.length)]));
 
     GroupingSearch grouper = new GroupingSearch(getGroupSelector());
     grouper.setGroupDocsLimit(10);
-    Sort sort = new Sort(new SortField("sort1", SortField.Type.STRING), new SortField("sort2", SortField.Type.LONG));
+    Sort sort =
+        new Sort(
+            new SortField("sort1", SortField.Type.STRING),
+            new SortField("sort2", SortField.Type.LONG));
     grouper.setGroupSort(sort);
     TopGroups<T> topGroups = grouper.search(searcher, topLevel, 0, 5);
     TopDocs topDoc = searcher.search(topLevel, 1, sort);
@@ -99,10 +102,11 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
       // We're sorting the groups by a defined Sort, but each group itself should be ordered
       // by doc relevance, and should be equal to the results of a top-level query filtered
       // by the group value
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(filterQuery(topGroups.groups[i].groupValue), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(filterQuery(topGroups.groups[i].groupValue), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 10);
       assertScoreDocsEquals(topGroups.groups[i].scoreDocs, td.scoreDocs);
       // The top group should have sort values equal to the sort values of the top doc of
@@ -111,7 +115,8 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
       if (i > 0) {
         assertSortsBefore(topGroups.groups[i - 1], topGroups.groups[i]);
       } else {
-        assertArrayEquals(((FieldDoc)topDoc.scoreDocs[0]).fields, topGroups.groups[0].groupSortValues);
+        assertArrayEquals(
+            ((FieldDoc) topDoc.scoreDocs[0]).fields, topGroups.groups[0].groupSortValues);
       }
     }
 
@@ -124,12 +129,15 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     indexRandomDocs(shard.writer);
     IndexSearcher searcher = shard.getIndexSearcher();
 
-    String[] query = new String[]{ "foo", "bar", "baz" };
+    String[] query = new String[] {"foo", "bar", "baz"};
     Query topLevel = new TermQuery(new Term("text", query[random().nextInt(query.length)]));
 
     GroupingSearch grouper = new GroupingSearch(getGroupSelector());
     grouper.setGroupDocsLimit(10);
-    Sort sort = new Sort(new SortField("sort1", SortField.Type.STRING), new SortField("sort2", SortField.Type.LONG));
+    Sort sort =
+        new Sort(
+            new SortField("sort1", SortField.Type.STRING),
+            new SortField("sort2", SortField.Type.LONG));
     grouper.setSortWithinGroup(sort);
 
     TopGroups<T> topGroups = grouper.search(searcher, topLevel, 0, 5);
@@ -146,16 +154,16 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
       }
       // Groups themselves are ordered by a defined Sort, and each should give the same result as
       // the top-level query, filtered by the group value, with the same Sort
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(filterQuery(topGroups.groups[i].groupValue), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(filterQuery(topGroups.groups[i].groupValue), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 10, sort);
       assertScoreDocsEquals(td.scoreDocs, topGroups.groups[i].scoreDocs);
     }
 
     shard.close();
-
   }
 
   public void testGroupHeads() throws IOException {
@@ -164,7 +172,7 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     indexRandomDocs(shard.writer);
     IndexSearcher searcher = shard.getIndexSearcher();
 
-    String[] query = new String[]{ "foo", "bar", "baz" };
+    String[] query = new String[] {"foo", "bar", "baz"};
     Query topLevel = new TermQuery(new Term("text", query[random().nextInt(query.length)]));
 
     GroupSelector<T> groupSelector = getGroupSelector();
@@ -180,10 +188,11 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     int totalHits = searcher.count(topLevel);
     int groupHits = 0;
     for (T groupValue : matchingGroups) {
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(filterQuery(groupValue), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(filterQuery(groupValue), BooleanClause.Occur.FILTER)
+              .build();
       groupHits += searcher.count(filtered);
     }
     assertEquals(totalHits, groupHits);
@@ -195,15 +204,17 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
         cardinality++;
       }
     }
-    assertEquals(matchingGroups.size(), cardinality);   // We should have one set bit per matching group
+    assertEquals(
+        matchingGroups.size(), cardinality); // We should have one set bit per matching group
 
     // Each group head should correspond to the topdoc of a search filtered by
     // that group
     for (T groupValue : matchingGroups) {
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(filterQuery(groupValue), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(filterQuery(groupValue), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 1);
       assertTrue(groupHeads.get(td.scoreDocs[0].doc));
     }
@@ -217,10 +228,13 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     indexRandomDocs(shard.writer);
     IndexSearcher searcher = shard.getIndexSearcher();
 
-    String[] query = new String[]{ "foo", "bar", "baz" };
+    String[] query = new String[] {"foo", "bar", "baz"};
     Query topLevel = new TermQuery(new Term("text", query[random().nextInt(query.length)]));
 
-    Sort sort = new Sort(new SortField("sort1", SortField.Type.STRING), new SortField("sort2", SortField.Type.LONG));
+    Sort sort =
+        new Sort(
+            new SortField("sort1", SortField.Type.STRING),
+            new SortField("sort2", SortField.Type.LONG));
     GroupSelector<T> groupSelector = getGroupSelector();
     GroupingSearch grouping = new GroupingSearch(groupSelector);
     grouping.setAllGroups(true);
@@ -237,15 +251,17 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
         cardinality++;
       }
     }
-    assertEquals(matchingGroups.size(), cardinality);   // We should have one set bit per matching group
+    assertEquals(
+        matchingGroups.size(), cardinality); // We should have one set bit per matching group
 
     // Each group head should correspond to the topdoc of a search filtered by
     // that group using the same within-group sort
     for (T groupValue : matchingGroups) {
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(filterQuery(groupValue), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(filterQuery(groupValue), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 1, sort);
       assertTrue(groupHeads.get(td.scoreDocs[0].doc));
     }
@@ -263,7 +279,7 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
       shards[i] = new Shard();
     }
 
-    String[] texts = new String[]{ "foo", "bar", "bar baz", "foo foo bar" };
+    String[] texts = new String[] {"foo", "bar", "bar baz", "foo foo bar"};
 
     // Create a bunch of random documents, and index them - once into the control index,
     // and once into a randomly picked shard.
@@ -282,29 +298,35 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
       shards[shard].writer.addDocument(doc);
     }
 
-    String[] query = new String[]{ "foo", "bar", "baz" };
+    String[] query = new String[] {"foo", "bar", "baz"};
     Query topLevel = new TermQuery(new Term("text", query[random().nextInt(query.length)]));
 
-    Sort sort = new Sort(new SortField("sort1", SortField.Type.STRING), new SortField("sort2", SortField.Type.LONG));
+    Sort sort =
+        new Sort(
+            new SortField("sort1", SortField.Type.STRING),
+            new SortField("sort2", SortField.Type.LONG));
 
     // A grouped query run in two phases against the control should give us the same
     // result as the query run against shards and merged back together after each phase.
 
-    FirstPassGroupingCollector<T> singletonFirstPass = new FirstPassGroupingCollector<>(getGroupSelector(), sort, 5);
+    FirstPassGroupingCollector<T> singletonFirstPass =
+        new FirstPassGroupingCollector<>(getGroupSelector(), sort, 5);
     control.getIndexSearcher().search(topLevel, singletonFirstPass);
     Collection<SearchGroup<T>> singletonGroups = singletonFirstPass.getTopGroups(0);
 
     List<Collection<SearchGroup<T>>> shardGroups = new ArrayList<>();
     for (Shard shard : shards) {
-      FirstPassGroupingCollector<T> fc = new FirstPassGroupingCollector<>(getGroupSelector(), sort, 5);
+      FirstPassGroupingCollector<T> fc =
+          new FirstPassGroupingCollector<>(getGroupSelector(), sort, 5);
       shard.getIndexSearcher().search(topLevel, fc);
       shardGroups.add(fc.getTopGroups(0));
     }
     Collection<SearchGroup<T>> mergedGroups = SearchGroup.merge(shardGroups, 0, 5, sort);
     assertEquals(singletonGroups, mergedGroups);
 
-    TopGroupsCollector<T> singletonSecondPass = new TopGroupsCollector<>(getGroupSelector(), singletonGroups, sort,
-        Sort.RELEVANCE, 5, true);
+    TopGroupsCollector<T> singletonSecondPass =
+        new TopGroupsCollector<>(
+            getGroupSelector(), singletonGroups, sort, Sort.RELEVANCE, 5, true);
     control.getIndexSearcher().search(topLevel, singletonSecondPass);
     TopGroups<T> singletonTopGroups = singletonSecondPass.getTopGroups(0);
 
@@ -313,12 +335,14 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     TopGroups<T>[] shardTopGroups = (TopGroups<T>[]) new TopGroups<?>[shards.length];
     int j = 0;
     for (Shard shard : shards) {
-      TopGroupsCollector<T> sc = new TopGroupsCollector<>(getGroupSelector(), mergedGroups, sort, Sort.RELEVANCE, 5, true);
+      TopGroupsCollector<T> sc =
+          new TopGroupsCollector<>(getGroupSelector(), mergedGroups, sort, Sort.RELEVANCE, 5, true);
       shard.getIndexSearcher().search(topLevel, sc);
       shardTopGroups[j] = sc.getTopGroups(0);
       j++;
     }
-    TopGroups<T> mergedTopGroups = TopGroups.merge(shardTopGroups, sort, Sort.RELEVANCE, 0, 5, TopGroups.ScoreMergeMode.None);
+    TopGroups<T> mergedTopGroups =
+        TopGroups.merge(shardTopGroups, sort, Sort.RELEVANCE, 0, 5, TopGroups.ScoreMergeMode.None);
     assertNotNull(mergedTopGroups);
 
     assertEquals(singletonTopGroups.totalGroupedHitCount, mergedTopGroups.totalGroupedHitCount);
@@ -327,18 +351,19 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
     assertEquals(singletonTopGroups.groups.length, mergedTopGroups.groups.length);
     for (int i = 0; i < singletonTopGroups.groups.length; i++) {
       assertEquals(singletonTopGroups.groups[i].groupValue, mergedTopGroups.groups[i].groupValue);
-      assertEquals(singletonTopGroups.groups[i].scoreDocs.length, mergedTopGroups.groups[i].scoreDocs.length);
+      assertEquals(
+          singletonTopGroups.groups[i].scoreDocs.length,
+          mergedTopGroups.groups[i].scoreDocs.length);
     }
 
     control.close();
     for (Shard shard : shards) {
       shard.close();
     }
-
   }
 
   private void indexRandomDocs(RandomIndexWriter w) throws IOException {
-    String[] texts = new String[]{ "foo", "bar", "bar baz", "foo foo bar" };
+    String[] texts = new String[] {"foo", "bar", "bar baz", "foo foo bar"};
 
     int numDocs = atLeast(200);
     for (int i = 0; i < numDocs; i++) {
@@ -356,10 +381,9 @@ public abstract class BaseGroupSelectorTestCase<T> extends AbstractGroupingTestC
   private void assertSortsBefore(GroupDocs<T> first, GroupDocs<T> second) {
     Object[] groupSortValues = second.groupSortValues;
     Object[] prevSortValues = first.groupSortValues;
-    assertTrue(((BytesRef)prevSortValues[0]).compareTo((BytesRef)groupSortValues[0]) <= 0);
+    assertTrue(((BytesRef) prevSortValues[0]).compareTo((BytesRef) groupSortValues[0]) <= 0);
     if (prevSortValues[0].equals(groupSortValues[0])) {
-      assertTrue((long)prevSortValues[1] <= (long)groupSortValues[1]);
+      assertTrue((long) prevSortValues[1] <= (long) groupSortValues[1]);
     }
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupHeadsCollector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupHeadsCollector.java
index fef695f..9b7baae 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupHeadsCollector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupHeadsCollector.java
@@ -27,7 +27,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.BinaryDocValuesField;
 import org.apache.lucene.document.Document;
@@ -61,10 +60,11 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
   public void testBasic() throws Exception {
     final String groupField = "author";
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random(),
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
     DocValuesType valueType = DocValuesType.SORTED;
 
     // 0
@@ -137,34 +137,45 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     int maxDoc = reader.maxDoc();
 
     Sort sortWithinGroup = new Sort(new SortField("id_1", SortField.Type.INT, true));
-    AllGroupHeadsCollector<?> allGroupHeadsCollector = createRandomCollector(groupField, sortWithinGroup);
+    AllGroupHeadsCollector<?> allGroupHeadsCollector =
+        createRandomCollector(groupField, sortWithinGroup);
     indexSearcher.search(new TermQuery(new Term("content", "random")), allGroupHeadsCollector);
-    assertTrue(arrayContains(new int[]{2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads()));
-    assertTrue(openBitSetContains(new int[]{2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
+    assertTrue(arrayContains(new int[] {2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads()));
+    assertTrue(
+        openBitSetContains(
+            new int[] {2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
 
     allGroupHeadsCollector = createRandomCollector(groupField, sortWithinGroup);
     indexSearcher.search(new TermQuery(new Term("content", "some")), allGroupHeadsCollector);
-    assertTrue(arrayContains(new int[]{2, 3, 4}, allGroupHeadsCollector.retrieveGroupHeads()));
-    assertTrue(openBitSetContains(new int[]{2, 3, 4}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
+    assertTrue(arrayContains(new int[] {2, 3, 4}, allGroupHeadsCollector.retrieveGroupHeads()));
+    assertTrue(
+        openBitSetContains(
+            new int[] {2, 3, 4}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
 
     allGroupHeadsCollector = createRandomCollector(groupField, sortWithinGroup);
     indexSearcher.search(new TermQuery(new Term("content", "blob")), allGroupHeadsCollector);
-    assertTrue(arrayContains(new int[]{1, 5}, allGroupHeadsCollector.retrieveGroupHeads()));
-    assertTrue(openBitSetContains(new int[]{1, 5}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
+    assertTrue(arrayContains(new int[] {1, 5}, allGroupHeadsCollector.retrieveGroupHeads()));
+    assertTrue(
+        openBitSetContains(
+            new int[] {1, 5}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
 
     // STRING sort type triggers different implementation
     Sort sortWithinGroup2 = new Sort(new SortField("id_2", SortField.Type.STRING, true));
     allGroupHeadsCollector = createRandomCollector(groupField, sortWithinGroup2);
     indexSearcher.search(new TermQuery(new Term("content", "random")), allGroupHeadsCollector);
-    assertTrue(arrayContains(new int[]{2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads()));
-    assertTrue(openBitSetContains(new int[]{2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
+    assertTrue(arrayContains(new int[] {2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads()));
+    assertTrue(
+        openBitSetContains(
+            new int[] {2, 3, 5, 7}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
 
     Sort sortWithinGroup3 = new Sort(new SortField("id_2", SortField.Type.STRING, false));
     allGroupHeadsCollector = createRandomCollector(groupField, sortWithinGroup3);
     indexSearcher.search(new TermQuery(new Term("content", "random")), allGroupHeadsCollector);
     // 7 b/c higher doc id wins, even if order of field is in not in reverse.
-    assertTrue(arrayContains(new int[]{0, 3, 4, 6}, allGroupHeadsCollector.retrieveGroupHeads()));
-    assertTrue(openBitSetContains(new int[]{0, 3, 4, 6}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
+    assertTrue(arrayContains(new int[] {0, 3, 4, 6}, allGroupHeadsCollector.retrieveGroupHeads()));
+    assertTrue(
+        openBitSetContains(
+            new int[] {0, 3, 4, 6}, allGroupHeadsCollector.retrieveGroupHeads(maxDoc), maxDoc));
 
     indexSearcher.getIndexReader().close();
     dir.close();
@@ -174,7 +185,8 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     int numberOfRuns = atLeast(1);
     for (int iter = 0; iter < numberOfRuns; iter++) {
       if (VERBOSE) {
-        System.out.println(String.format(Locale.ROOT, "TEST: iter=%d total=%d", iter, numberOfRuns));
+        System.out.println(
+            String.format(Locale.ROOT, "TEST: iter=%d total=%d", iter, numberOfRuns));
       }
 
       final int numDocs = TestUtil.nextInt(random(), 100, 1000) * RANDOM_MULTIPLIER;
@@ -188,10 +200,11 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
       for (int i = 0; i < numGroups; i++) {
         String randomValue;
         do {
-          // B/c of DV based impl we can't see the difference between an empty string and a null value.
+          // B/c of DV based impl we can't see the difference between an empty string and a null
+          // value.
           // For that reason we don't generate empty string groups.
           randomValue = TestUtil.randomRealisticUnicodeString(random());
-          //randomValue = TestUtil.randomSimpleString(random());
+          // randomValue = TestUtil.randomSimpleString(random());
         } while ("".equals(randomValue));
         groups.add(new BytesRef(randomValue));
       }
@@ -213,10 +226,8 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
       }
 
       Directory dir = newDirectory();
-      RandomIndexWriter w = new RandomIndexWriter(
-          random(),
-          dir,
-          newIndexWriterConfig(new MockAnalyzer(random())));
+      RandomIndexWriter w =
+          new RandomIndexWriter(random(), dir, newIndexWriterConfig(new MockAnalyzer(random())));
       DocValuesType valueType = DocValuesType.SORTED;
 
       Document doc = new Document();
@@ -250,17 +261,29 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
           groupValue = groups.get(random().nextInt(groups.size()));
         }
 
-        final GroupDoc groupDoc = new GroupDoc(
-            i,
-            groupValue,
-            groups.get(random().nextInt(groups.size())),
-            groups.get(random().nextInt(groups.size())),
-            new BytesRef(String.format(Locale.ROOT, "%05d", i)),
-            contentStrings[random().nextInt(contentStrings.length)]
-        );
+        final GroupDoc groupDoc =
+            new GroupDoc(
+                i,
+                groupValue,
+                groups.get(random().nextInt(groups.size())),
+                groups.get(random().nextInt(groups.size())),
+                new BytesRef(String.format(Locale.ROOT, "%05d", i)),
+                contentStrings[random().nextInt(contentStrings.length)]);
 
         if (VERBOSE) {
-          System.out.println("  doc content=" + groupDoc.content + " id=" + i + " group=" + (groupDoc.group == null ? "null" : groupDoc.group.utf8ToString()) + " sort1=" + groupDoc.sort1.utf8ToString() + " sort2=" + groupDoc.sort2.utf8ToString() + " sort3=" + groupDoc.sort3.utf8ToString());
+          System.out.println(
+              "  doc content="
+                  + groupDoc.content
+                  + " id="
+                  + i
+                  + " group="
+                  + (groupDoc.group == null ? "null" : groupDoc.group.utf8ToString())
+                  + " sort1="
+                  + groupDoc.sort1.utf8ToString()
+                  + " sort2="
+                  + groupDoc.sort2.utf8ToString()
+                  + " sort3="
+                  + groupDoc.sort3.utf8ToString());
         }
 
         groupDocs[i] = groupDoc;
@@ -296,7 +319,8 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
 
       Set<Integer> seenIDs = new HashSet<>();
       for (int contentID = 0; contentID < 3; contentID++) {
-        final ScoreDoc[] hits = s.search(new TermQuery(new Term("content", "real" + contentID)), numDocs).scoreDocs;
+        final ScoreDoc[] hits =
+            s.search(new TermQuery(new Term("content", "real" + contentID)), numDocs).scoreDocs;
         for (ScoreDoc hit : hits) {
           int idValue = docIDToFieldId[hit.doc];
           final GroupDoc gd = groupDocs[idValue];
@@ -315,19 +339,22 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
         assertTrue(Float.isFinite(gd.score));
         assertTrue(gd.score >= 0.0);
       }
-      
+
       for (int searchIter = 0; searchIter < 100; searchIter++) {
-        
+
         if (VERBOSE) {
           System.out.println("TEST: searchIter=" + searchIter);
         }
-        
+
         final String searchTerm = "real" + random().nextInt(3);
         boolean sortByScoreOnly = random().nextBoolean();
         Sort sortWithinGroup = getRandomSort(sortByScoreOnly);
-        AllGroupHeadsCollector<?> allGroupHeadsCollector = createRandomCollector("group", sortWithinGroup);
+        AllGroupHeadsCollector<?> allGroupHeadsCollector =
+            createRandomCollector("group", sortWithinGroup);
         s.search(new TermQuery(new Term("content", searchTerm)), allGroupHeadsCollector);
-        int[] expectedGroupHeads = createExpectedGroupHeads(searchTerm, groupDocs, sortWithinGroup, sortByScoreOnly, fieldIdToDocID);
+        int[] expectedGroupHeads =
+            createExpectedGroupHeads(
+                searchTerm, groupDocs, sortWithinGroup, sortByScoreOnly, fieldIdToDocID);
         int[] actualGroupHeads = allGroupHeadsCollector.retrieveGroupHeads();
         // The actual group heads contains Lucene ids. Need to change them into our id value.
         for (int i = 0; i < actualGroupHeads.length; i++) {
@@ -336,7 +363,7 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
         // Allows us the easily iterate and assert the actual and expected results.
         Arrays.sort(expectedGroupHeads);
         Arrays.sort(actualGroupHeads);
-        
+
         if (VERBOSE) {
           System.out.println("Collector: " + allGroupHeadsCollector.getClass().getSimpleName());
           System.out.println("Sort within group: " + sortWithinGroup);
@@ -345,41 +372,50 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
           System.out.println("\n=== Expected: \n");
           for (int expectedDocId : expectedGroupHeads) {
             GroupDoc expectedGroupDoc = groupDocs[expectedDocId];
-            String expectedGroup = expectedGroupDoc.group == null ? null : expectedGroupDoc.group.utf8ToString();
+            String expectedGroup =
+                expectedGroupDoc.group == null ? null : expectedGroupDoc.group.utf8ToString();
             System.out.println(
-                String.format(Locale.ROOT,
+                String.format(
+                    Locale.ROOT,
                     "Group:%10s score%5f Sort1:%10s Sort2:%10s Sort3:%10s doc:%5d",
-                    expectedGroup, expectedGroupDoc.score, expectedGroupDoc.sort1.utf8ToString(),
-                    expectedGroupDoc.sort2.utf8ToString(), expectedGroupDoc.sort3.utf8ToString(), expectedDocId
-                    )
-                );
+                    expectedGroup,
+                    expectedGroupDoc.score,
+                    expectedGroupDoc.sort1.utf8ToString(),
+                    expectedGroupDoc.sort2.utf8ToString(),
+                    expectedGroupDoc.sort3.utf8ToString(),
+                    expectedDocId));
           }
           System.out.println("\n=== Actual: \n");
           for (int actualDocId : actualGroupHeads) {
             GroupDoc actualGroupDoc = groupDocs[actualDocId];
-            String actualGroup = actualGroupDoc.group == null ? null : actualGroupDoc.group.utf8ToString();
+            String actualGroup =
+                actualGroupDoc.group == null ? null : actualGroupDoc.group.utf8ToString();
             System.out.println(
-                String.format(Locale.ROOT,
+                String.format(
+                    Locale.ROOT,
                     "Group:%10s score%5f Sort1:%10s Sort2:%10s Sort3:%10s doc:%5d",
-                    actualGroup, actualGroupDoc.score, actualGroupDoc.sort1.utf8ToString(),
-                    actualGroupDoc.sort2.utf8ToString(), actualGroupDoc.sort3.utf8ToString(), actualDocId
-                    )
-                );
+                    actualGroup,
+                    actualGroupDoc.score,
+                    actualGroupDoc.sort1.utf8ToString(),
+                    actualGroupDoc.sort2.utf8ToString(),
+                    actualGroupDoc.sort3.utf8ToString(),
+                    actualDocId));
           }
-          System.out.println("\n===================================================================================");
+          System.out.println(
+              "\n===================================================================================");
         }
-        
+
         assertArrayEquals(expectedGroupHeads, actualGroupHeads);
       }
-      
+
       r.close();
       dir.close();
     }
   }
 
-
   private boolean arrayContains(int[] expected, int[] actual) {
-    Arrays.sort(actual); // in some cases the actual docs aren't sorted by docid. This method expects that.
+    // in some cases the actual docs aren't sorted by docid. This method expects that.
+    Arrays.sort(actual);
     if (expected.length != actual.length) {
       return false;
     }
@@ -401,9 +437,10 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     return true;
   }
 
-  private boolean openBitSetContains(int[] expectedDocs, Bits actual, int maxDoc) throws IOException {
+  private boolean openBitSetContains(int[] expectedDocs, Bits actual, int maxDoc)
+      throws IOException {
     assert actual instanceof FixedBitSet;
-    if (expectedDocs.length != ((FixedBitSet)actual).cardinality()) {
+    if (expectedDocs.length != ((FixedBitSet) actual).cardinality()) {
       return false;
     }
 
@@ -412,7 +449,12 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
       expected.set(expectedDoc);
     }
 
-    for (int docId = expected.nextSetBit(0); docId != DocIdSetIterator.NO_MORE_DOCS; docId = docId + 1 >= expected.length() ? DocIdSetIterator.NO_MORE_DOCS : expected.nextSetBit(docId + 1)) {
+    for (int docId = expected.nextSetBit(0);
+        docId != DocIdSetIterator.NO_MORE_DOCS;
+        docId =
+            docId + 1 >= expected.length()
+                ? DocIdSetIterator.NO_MORE_DOCS
+                : expected.nextSetBit(docId + 1)) {
       if (!actual.get(docId)) {
         return false;
       }
@@ -421,7 +463,12 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     return true;
   }
 
-  private int[] createExpectedGroupHeads(String searchTerm, GroupDoc[] groupDocs, Sort docSort, boolean sortByScoreOnly, int[] fieldIdToDocID) {
+  private int[] createExpectedGroupHeads(
+      String searchTerm,
+      GroupDoc[] groupDocs,
+      Sort docSort,
+      boolean sortByScoreOnly,
+      int[] fieldIdToDocID) {
     Map<BytesRef, List<GroupDoc>> groupHeads = new HashMap<>();
     for (GroupDoc groupDoc : groupDocs) {
       if (!groupDoc.content.startsWith(searchTerm)) {
@@ -473,7 +520,8 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     return new Sort(sortFields.toArray(new SortField[sortFields.size()]));
   }
 
-  private Comparator<GroupDoc> getComparator(Sort sort, final boolean sortByScoreOnly, final int[] fieldIdToDocID) {
+  private Comparator<GroupDoc> getComparator(
+      Sort sort, final boolean sortByScoreOnly, final int[] fieldIdToDocID) {
     final SortField[] sortFields = sort.getSort();
     return new Comparator<GroupDoc>() {
       @Override
@@ -509,19 +557,22 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     };
   }
 
-  @SuppressWarnings({"unchecked","rawtypes"})
+  @SuppressWarnings({"unchecked", "rawtypes"})
   private AllGroupHeadsCollector<?> createRandomCollector(String groupField, Sort sortWithinGroup) {
     if (random().nextBoolean()) {
       ValueSource vs = new BytesRefFieldSource(groupField);
-      return AllGroupHeadsCollector.newCollector(new ValueSourceGroupSelector(vs, new HashMap<>()), sortWithinGroup);
+      return AllGroupHeadsCollector.newCollector(
+          new ValueSourceGroupSelector(vs, new HashMap<>()), sortWithinGroup);
     } else {
-      return AllGroupHeadsCollector.newCollector(new TermGroupSelector(groupField), sortWithinGroup);
+      return AllGroupHeadsCollector.newCollector(
+          new TermGroupSelector(groupField), sortWithinGroup);
     }
   }
 
-  private void addGroupField(Document doc, String groupField, String value, DocValuesType valueType) {
+  private void addGroupField(
+      Document doc, String groupField, String value, DocValuesType valueType) {
     Field valuesField = null;
-    switch(valueType) {
+    switch (valueType) {
       case BINARY:
         valuesField = new BinaryDocValuesField(groupField, new BytesRef(value));
         break;
@@ -544,7 +595,8 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
     final String content;
     float score;
 
-    public GroupDoc(int id, BytesRef group, BytesRef sort1, BytesRef sort2, BytesRef sort3, String content) {
+    public GroupDoc(
+        int id, BytesRef group, BytesRef sort1, BytesRef sort2, BytesRef sort3, String content) {
       this.id = id;
       this.group = group;
       this.sort1 = sort1;
@@ -552,7 +604,5 @@ public class TestAllGroupHeadsCollector extends LuceneTestCase {
       this.sort3 = sort3;
       this.content = content;
     }
-
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupsCollector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupsCollector.java
index ccdf3c3..73e7dc0 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupsCollector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestAllGroupsCollector.java
@@ -17,7 +17,6 @@
 package org.apache.lucene.search.grouping;
 
 import java.util.HashMap;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -43,10 +42,11 @@ public class TestAllGroupsCollector extends LuceneTestCase {
     customType.setStored(true);
 
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random(),
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
 
     // 0
     Document doc = new Document();
@@ -124,11 +124,9 @@ public class TestAllGroupsCollector extends LuceneTestCase {
   private AllGroupsCollector<?> createRandomCollector(String groupField) {
     if (random().nextBoolean()) {
       return new AllGroupsCollector<>(new TermGroupSelector(groupField));
-    }
-    else {
+    } else {
       ValueSource vs = new BytesRefFieldSource(groupField);
       return new AllGroupsCollector<>(new ValueSourceGroupSelector(vs, new HashMap<>()));
     }
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestBlockGrouping.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestBlockGrouping.java
index 78acbbf..e70ed27 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestBlockGrouping.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestBlockGrouping.java
@@ -20,7 +20,6 @@ package org.apache.lucene.search.grouping;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.NumericDocValuesField;
@@ -65,16 +64,16 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
       String bookName = searcher.doc(tg.groups[i].scoreDocs[0].doc).get("book");
       // The contents of each group should be equal to the results of a search for
       // that group alone
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(new TermQuery(new Term("book", bookName)), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(new TermQuery(new Term("book", bookName)), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 10);
       assertScoreDocsEquals(td.scoreDocs, tg.groups[i].scoreDocs);
     }
 
     shard.close();
-
   }
 
   public void testTopLevelSort() throws IOException {
@@ -88,7 +87,8 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
     Query blockEndQuery = new TermQuery(new Term("blockEnd", "true"));
     GroupingSearch grouper = new GroupingSearch(blockEndQuery);
     grouper.setGroupDocsLimit(10);
-    grouper.setGroupSort(sort);     // groups returned sorted by length, chapters within group sorted by relevancy
+    // groups returned sorted by length, chapters within group sorted by relevancy
+    grouper.setGroupSort(sort);
 
     Query topLevel = new TermQuery(new Term("text", "grandmother"));
     TopGroups<?> tg = grouper.search(searcher, topLevel, 0, 5);
@@ -96,16 +96,17 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
     // The sort value of the top doc in the top group should be the same as the sort value
     // of the top result from the same search done with no grouping
     TopDocs topDoc = searcher.search(topLevel, 1, sort);
-    assertEquals(((FieldDoc)topDoc.scoreDocs[0]).fields[0], tg.groups[0].groupSortValues[0]);
+    assertEquals(((FieldDoc) topDoc.scoreDocs[0]).fields[0], tg.groups[0].groupSortValues[0]);
 
     for (int i = 0; i < tg.groups.length; i++) {
       String bookName = searcher.doc(tg.groups[i].scoreDocs[0].doc).get("book");
       // The contents of each group should be equal to the results of a search for
       // that group alone, sorted by score
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(new TermQuery(new Term("book", bookName)), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(new TermQuery(new Term("book", bookName)), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 10);
       assertScoreDocsEquals(td.scoreDocs, tg.groups[i].scoreDocs);
       if (i > 1) {
@@ -114,7 +115,6 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
     }
 
     shard.close();
-
   }
 
   public void testWithinGroupSort() throws IOException {
@@ -128,7 +128,8 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
     Query blockEndQuery = new TermQuery(new Term("blockEnd", "true"));
     GroupingSearch grouper = new GroupingSearch(blockEndQuery);
     grouper.setGroupDocsLimit(10);
-    grouper.setSortWithinGroup(sort);     // groups returned sorted by relevancy, chapters within group sorted by length
+    // groups returned sorted by relevancy, chapters within group sorted by length
+    grouper.setSortWithinGroup(sort);
 
     Query topLevel = new TermQuery(new Term("text", "grandmother"));
     TopGroups<?> tg = grouper.search(searcher, topLevel, 0, 5);
@@ -136,16 +137,17 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
     // We're sorting by score, so the score of the top group should be the same as the
     // score of the top document from the same query with no grouping
     TopDocs topDoc = searcher.search(topLevel, 1);
-    assertEquals(topDoc.scoreDocs[0].score, (float)tg.groups[0].groupSortValues[0], 0);
+    assertEquals(topDoc.scoreDocs[0].score, (float) tg.groups[0].groupSortValues[0], 0);
 
     for (int i = 0; i < tg.groups.length; i++) {
       String bookName = searcher.doc(tg.groups[i].scoreDocs[0].doc).get("book");
       // The contents of each group should be equal to the results of a search for
       // that group alone, sorted by length
-      Query filtered = new BooleanQuery.Builder()
-          .add(topLevel, BooleanClause.Occur.MUST)
-          .add(new TermQuery(new Term("book", bookName)), BooleanClause.Occur.FILTER)
-          .build();
+      Query filtered =
+          new BooleanQuery.Builder()
+              .add(topLevel, BooleanClause.Occur.MUST)
+              .add(new TermQuery(new Term("book", bookName)), BooleanClause.Occur.FILTER)
+              .build();
       TopDocs td = searcher.search(filtered, 10, sort);
       assertFieldDocsEquals(td.scoreDocs, tg.groups[i].scoreDocs);
       // We're sorting by score, so the group sort value for each group should be a float,
@@ -188,14 +190,15 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
     return block;
   }
 
-  private static final String[] TEXT = new String[]{
-      "It was the day my grandmother exploded",
-      "It was the best of times, it was the worst of times",
-      "It was a bright cold morning in April",
-      "It is a truth universally acknowledged",
-      "I have just returned from a visit to my landlord",
-      "I've been here and I've been there"
-  };
+  private static final String[] TEXT =
+      new String[] {
+        "It was the day my grandmother exploded",
+        "It was the best of times, it was the worst of times",
+        "It was a bright cold morning in April",
+        "It is a truth universally acknowledged",
+        "I have just returned from a visit to my landlord",
+        "I've been here and I've been there"
+      };
 
   private static String randomText() {
     StringBuilder sb = new StringBuilder(TEXT[random().nextInt(TEXT.length)]);
@@ -209,7 +212,7 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
   private void assertSortsBefore(GroupDocs<?> first, GroupDocs<?> second) {
     Object[] groupSortValues = second.groupSortValues;
     Object[] prevSortValues = first.groupSortValues;
-    assertTrue(((Long)prevSortValues[0]).compareTo((Long)groupSortValues[0]) <= 0);
+    assertTrue(((Long) prevSortValues[0]).compareTo((Long) groupSortValues[0]) <= 0);
   }
 
   protected static void assertFieldDocsEquals(ScoreDoc[] expected, ScoreDoc[] actual) {
@@ -221,5 +224,4 @@ public class TestBlockGrouping extends AbstractGroupingTestCase {
       assertArrayEquals(e.fields, a.fields);
     }
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDistinctValuesCollector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDistinctValuesCollector.java
index cedbeea..8ec8e88 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDistinctValuesCollector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDistinctValuesCollector.java
@@ -29,7 +29,6 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
 import java.util.Set;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -51,18 +50,19 @@ import org.apache.lucene.util.mutable.MutableValueStr;
 
 public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
 
-  private final static NullComparator nullComparator = new NullComparator();
-  
+  private static final NullComparator nullComparator = new NullComparator();
+
   private static final String GROUP_FIELD = "author";
   private static final String COUNT_FIELD = "publisher";
 
   public void testSimple() throws Exception {
     Random random = random();
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random,
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random,
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
     Document doc = new Document();
     addField(doc, GROUP_FIELD, "1");
     addField(doc, COUNT_FIELD, "1");
@@ -120,27 +120,30 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     IndexSearcher indexSearcher = newSearcher(w.getReader());
     w.close();
 
-    Comparator<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> cmp = (groupCount1, groupCount2) -> {
-      if (groupCount1.groupValue == null) {
-        if (groupCount2.groupValue == null) {
-          return 0;
-        }
-        return -1;
-      } else if (groupCount2.groupValue == null) {
-        return 1;
-      } else {
-        return groupCount1.groupValue.compareTo(groupCount2.groupValue);
-      }
-    };
+    Comparator<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> cmp =
+        (groupCount1, groupCount2) -> {
+          if (groupCount1.groupValue == null) {
+            if (groupCount2.groupValue == null) {
+              return 0;
+            }
+            return -1;
+          } else if (groupCount2.groupValue == null) {
+            return 1;
+          } else {
+            return groupCount1.groupValue.compareTo(groupCount2.groupValue);
+          }
+        };
 
     // === Search for content:random
-    FirstPassGroupingCollector<Comparable<Object>> firstCollector = createRandomFirstPassCollector(new Sort(), GROUP_FIELD, 10);
+    FirstPassGroupingCollector<Comparable<Object>> firstCollector =
+        createRandomFirstPassCollector(new Sort(), GROUP_FIELD, 10);
     indexSearcher.search(new TermQuery(new Term("content", "random")), firstCollector);
-    DistinctValuesCollector<Comparable<Object>, Comparable<Object>> distinctValuesCollector
-        = createDistinctCountCollector(firstCollector, COUNT_FIELD);
+    DistinctValuesCollector<Comparable<Object>, Comparable<Object>> distinctValuesCollector =
+        createDistinctCountCollector(firstCollector, COUNT_FIELD);
     indexSearcher.search(new TermQuery(new Term("content", "random")), distinctValuesCollector);
 
-    List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> gcs = distinctValuesCollector.getGroups();
+    List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> gcs =
+        distinctValuesCollector.getGroups();
     Collections.sort(gcs, cmp);
     assertEquals(4, gcs.size());
 
@@ -193,7 +196,7 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     assertEquals(1, countValues.size());
     compare("1", countValues.get(0));
 
-     // === Search for content:blob
+    // === Search for content:blob
     firstCollector = createRandomFirstPassCollector(new Sort(), GROUP_FIELD, 10);
     indexSearcher.search(new TermQuery(new Term("content", "blob")), firstCollector);
     distinctValuesCollector = createDistinctCountCollector(firstCollector, COUNT_FIELD);
@@ -229,33 +232,40 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
         Sort groupSort = new Sort(new SortField("id", SortField.Type.STRING));
         int topN = 1 + random.nextInt(10);
 
-        List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> expectedResult = createExpectedResult(context, term, groupSort, topN);
+        List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>>
+            expectedResult = createExpectedResult(context, term, groupSort, topN);
 
-        FirstPassGroupingCollector<Comparable<Object>> firstCollector = createRandomFirstPassCollector(groupSort, GROUP_FIELD, topN);
+        FirstPassGroupingCollector<Comparable<Object>> firstCollector =
+            createRandomFirstPassCollector(groupSort, GROUP_FIELD, topN);
         searcher.search(new TermQuery(new Term("content", term)), firstCollector);
-        DistinctValuesCollector<Comparable<Object>, Comparable<Object>> distinctValuesCollector
-            = createDistinctCountCollector(firstCollector, COUNT_FIELD);
+        DistinctValuesCollector<Comparable<Object>, Comparable<Object>> distinctValuesCollector =
+            createDistinctCountCollector(firstCollector, COUNT_FIELD);
         searcher.search(new TermQuery(new Term("content", term)), distinctValuesCollector);
         @SuppressWarnings("unchecked")
-        List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> actualResult = distinctValuesCollector.getGroups();
+        List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>>
+            actualResult = distinctValuesCollector.getGroups();
 
         if (VERBOSE) {
           System.out.println("Index iter=" + indexIter);
           System.out.println("Search iter=" + searchIter);
-          System.out.println("1st pass collector class name=" + firstCollector.getClass().getName());
-          System.out.println("2nd pass collector class name=" + distinctValuesCollector.getClass().getName());
+          System.out.println(
+              "1st pass collector class name=" + firstCollector.getClass().getName());
+          System.out.println(
+              "2nd pass collector class name=" + distinctValuesCollector.getClass().getName());
           System.out.println("Search term=" + term);
           System.out.println("1st pass groups=" + firstCollector.getTopGroups(0));
-          System.out.println("Expected:");      
+          System.out.println("Expected:");
           printGroups(expectedResult);
-          System.out.println("Actual:");      
+          System.out.println("Actual:");
           printGroups(actualResult);
         }
 
         assertEquals(expectedResult.size(), actualResult.size());
         for (int i = 0; i < expectedResult.size(); i++) {
-          DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>> expected = expectedResult.get(i);
-          DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>> actual = actualResult.get(i);
+          DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>> expected =
+              expectedResult.get(i);
+          DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>> actual =
+              actualResult.get(i);
           assertValues(expected.groupValue, actual.groupValue);
           assertEquals(expected.uniqueValues.size(), actual.uniqueValues.size());
           List<Comparable<?>> expectedUniqueValues = new ArrayList<>(expected.uniqueValues);
@@ -272,16 +282,18 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     }
   }
 
-  private void printGroups(List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> results) {
-    for(int i=0;i<results.size();i++) {
-      DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>> group = results.get(i);
+  private void printGroups(
+      List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> results) {
+    for (int i = 0; i < results.size(); i++) {
+      DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>> group =
+          results.get(i);
       Object gv = group.groupValue;
       if (gv instanceof BytesRef) {
         System.out.println(i + ": groupValue=" + ((BytesRef) gv).utf8ToString());
       } else {
         System.out.println(i + ": groupValue=" + gv);
       }
-      for(Object o : group.uniqueValues) {
+      for (Object o : group.uniqueValues) {
         if (o instanceof BytesRef) {
           System.out.println("  " + ((BytesRef) o).utf8ToString());
         } else {
@@ -298,7 +310,7 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
       compare(((BytesRef) expected).utf8ToString(), actual);
     }
   }
-  
+
   private void compare(String expected, Object groupValue) {
     if (BytesRef.class.isAssignableFrom(groupValue.getClass())) {
       assertEquals(expected, ((BytesRef) groupValue).utf8ToString());
@@ -338,13 +350,16 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     doc.add(new SortedDocValuesField(field, new BytesRef(value)));
   }
 
-  @SuppressWarnings({"unchecked","rawtypes"})
-  private <T extends Comparable<Object>, R extends Comparable<Object>> DistinctValuesCollector<T, R> createDistinctCountCollector(FirstPassGroupingCollector<T> firstPassGroupingCollector,
-                                                                                         String countField) throws IOException {
+  @SuppressWarnings({"unchecked", "rawtypes"})
+  private <T extends Comparable<Object>, R extends Comparable<Object>>
+      DistinctValuesCollector<T, R> createDistinctCountCollector(
+          FirstPassGroupingCollector<T> firstPassGroupingCollector, String countField)
+          throws IOException {
     Collection<SearchGroup<T>> searchGroups = firstPassGroupingCollector.getTopGroups(0);
     GroupSelector<T> selector = firstPassGroupingCollector.getGroupSelector();
     if (ValueSourceGroupSelector.class.isAssignableFrom(selector.getClass())) {
-      GroupSelector gs = new ValueSourceGroupSelector(new BytesRefFieldSource(countField), new HashMap<>());
+      GroupSelector gs =
+          new ValueSourceGroupSelector(new BytesRefFieldSource(countField), new HashMap<>());
       return new DistinctValuesCollector<>(selector, searchGroups, gs);
     } else {
       GroupSelector ts = new TermGroupSelector(countField);
@@ -352,18 +367,26 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     }
   }
 
-  @SuppressWarnings({"unchecked","rawtypes"})
-  private <T> FirstPassGroupingCollector<T> createRandomFirstPassCollector(Sort groupSort, String groupField, int topNGroups) throws IOException {
+  @SuppressWarnings({"unchecked", "rawtypes"})
+  private <T> FirstPassGroupingCollector<T> createRandomFirstPassCollector(
+      Sort groupSort, String groupField, int topNGroups) throws IOException {
     Random random = random();
     if (random.nextBoolean()) {
-      return (FirstPassGroupingCollector<T>) new FirstPassGroupingCollector<>(new ValueSourceGroupSelector(new BytesRefFieldSource(groupField), new HashMap<>()), groupSort, topNGroups);
+      return (FirstPassGroupingCollector<T>)
+          new FirstPassGroupingCollector<>(
+              new ValueSourceGroupSelector(new BytesRefFieldSource(groupField), new HashMap<>()),
+              groupSort,
+              topNGroups);
     } else {
-      return (FirstPassGroupingCollector<T>) new FirstPassGroupingCollector<>(new TermGroupSelector(groupField), groupSort, topNGroups);
+      return (FirstPassGroupingCollector<T>)
+          new FirstPassGroupingCollector<>(
+              new TermGroupSelector(groupField), groupSort, topNGroups);
     }
   }
 
-  @SuppressWarnings({"unchecked","rawtypes"})
-  private List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>> createExpectedResult(IndexContext context, String term, Sort groupSort, int topN) {
+  @SuppressWarnings({"unchecked", "rawtypes"})
+  private List<DistinctValuesCollector.GroupCount<Comparable<Object>, Comparable<Object>>>
+      createExpectedResult(IndexContext context, String term, Sort groupSort, int topN) {
     List result = new ArrayList();
     Map<String, Set<String>> groupCounts = context.searchTermToGroupCounts.get(term);
     int i = 0;
@@ -375,7 +398,9 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
       for (String val : groupCounts.get(group)) {
         uniqueValues.add(val != null ? new BytesRef(val) : null);
       }
-      result.add(new DistinctValuesCollector.GroupCount(group != null ? new BytesRef(group) : null, uniqueValues));
+      result.add(
+          new DistinctValuesCollector.GroupCount(
+              group != null ? new BytesRef(group) : null, uniqueValues));
     }
     return result;
   }
@@ -384,11 +409,11 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     Random random = random();
 
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random,
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy())
-      );
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random,
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random)).setMergePolicy(newLogMergePolicy()));
 
     int numDocs = 86 + random.nextInt(1087) * RANDOM_MULTIPLIER;
     String[] groupValues = new String[numDocs / 5];
@@ -399,12 +424,14 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     for (int i = 0; i < countValues.length; i++) {
       countValues[i] = generateRandomNonEmptyString();
     }
-    
+
     List<String> contentStrings = new ArrayList<>();
     Map<String, Map<String, Set<String>>> searchTermToGroupCounts = new HashMap<>();
     for (int i = 1; i <= numDocs; i++) {
-      String groupValue = random.nextInt(23) == 14 ? null : groupValues[random.nextInt(groupValues.length)];
-      String countValue = random.nextInt(21) == 13 ? null : countValues[random.nextInt(countValues.length)];
+      String groupValue =
+          random.nextInt(23) == 14 ? null : groupValues[random.nextInt(groupValues.length)];
+      String countValue =
+          random.nextInt(21) == 13 ? null : countValues[random.nextInt(countValues.length)];
       String content = "random" + random.nextInt(numDocs / 20);
       Map<String, Set<String>> groupToCounts = searchTermToGroupCounts.get(content);
       if (groupToCounts == null) {
@@ -434,14 +461,28 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
 
     DirectoryReader reader = w.getReader();
     if (VERBOSE) {
-      for(int docID=0;docID<reader.maxDoc();docID++) {
+      for (int docID = 0; docID < reader.maxDoc(); docID++) {
         Document doc = reader.document(docID);
-        System.out.println("docID=" + docID + " id=" + doc.get("id") + " content=" + doc.get("content") + " author=" + doc.get("author") + " publisher=" + doc.get("publisher"));
+        System.out.println(
+            "docID="
+                + docID
+                + " id="
+                + doc.get("id")
+                + " content="
+                + doc.get("content")
+                + " author="
+                + doc.get("author")
+                + " publisher="
+                + doc.get("publisher"));
       }
     }
 
     w.close();
-    return new IndexContext(dir, reader, searchTermToGroupCounts, contentStrings.toArray(new String[contentStrings.size()]));
+    return new IndexContext(
+        dir,
+        reader,
+        searchTermToGroupCounts,
+        contentStrings.toArray(new String[contentStrings.size()]));
   }
 
   private static class IndexContext {
@@ -451,8 +492,11 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
     final Map<String, Map<String, Set<String>>> searchTermToGroupCounts;
     final String[] contentStrings;
 
-    IndexContext(Directory directory, DirectoryReader indexReader, 
-                 Map<String, Map<String, Set<String>>> searchTermToGroupCounts, String[] contentStrings) {
+    IndexContext(
+        Directory directory,
+        DirectoryReader indexReader,
+        Map<String, Map<String, Set<String>>> searchTermToGroupCounts,
+        String[] contentStrings) {
       this.directory = directory;
       this.indexReader = indexReader;
       this.searchTermToGroupCounts = searchTermToGroupCounts;
@@ -463,7 +507,7 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
   private static class NullComparator implements Comparator<Comparable<?>> {
 
     @Override
-    @SuppressWarnings({"unchecked","rawtypes"})
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public int compare(Comparable a, Comparable b) {
       if (a == b) {
         return 0;
@@ -475,7 +519,5 @@ public class TestDistinctValuesCollector extends AbstractGroupingTestCase {
         return a.compareTo(b);
       }
     }
-
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeFactory.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeFactory.java
index d6e05c3..0e52ef2 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeFactory.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeFactory.java
@@ -33,7 +33,5 @@ public class TestDoubleRangeFactory extends LuceneTestCase {
     assertEquals(new DoubleRange(30, 40), factory.getRange(35, scratch));
     assertEquals(new DoubleRange(50, Double.MAX_VALUE), factory.getRange(50, scratch));
     assertEquals(new DoubleRange(50, Double.MAX_VALUE), factory.getRange(500, scratch));
-
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeGroupSelector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeGroupSelector.java
index 5350a04..ada3c04 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeGroupSelector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeGroupSelector.java
@@ -32,7 +32,7 @@ public class TestDoubleRangeGroupSelector extends BaseGroupSelectorTestCase<Doub
   @Override
   protected void addGroupField(Document document, int id) {
     if (rarely()) {
-      return;   // missing value
+      return; // missing value
     }
     // numbers between 0 and 1000, groups are 100 wide from 100 to 900
     double value = random().nextDouble() * 1000;
@@ -42,8 +42,8 @@ public class TestDoubleRangeGroupSelector extends BaseGroupSelectorTestCase<Doub
 
   @Override
   protected GroupSelector<DoubleRange> getGroupSelector() {
-    return new DoubleRangeGroupSelector(DoubleValuesSource.fromDoubleField("double"),
-        new DoubleRangeFactory(100, 100, 900));
+    return new DoubleRangeGroupSelector(
+        DoubleValuesSource.fromDoubleField("double"), new DoubleRangeFactory(100, 100, 900));
   }
 
   @Override
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupFacetCollector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupFacetCollector.java
index fffcd69..8060e15 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupFacetCollector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupFacetCollector.java
@@ -29,7 +29,6 @@ import java.util.NavigableSet;
 import java.util.Random;
 import java.util.Set;
 import java.util.TreeSet;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -48,7 +47,6 @@ import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.TestUtil;
 
-
 public class TestGroupFacetCollector extends AbstractGroupingTestCase {
 
   public void testSimple() throws Exception {
@@ -57,10 +55,11 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     customType.setStored(true);
 
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random(),
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
     boolean useDv = true;
 
     // 0
@@ -104,18 +103,19 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     List<TermGroupFacetCollector.FacetEntry> entries;
     GroupFacetCollector groupedAirportFacetCollector;
     TermGroupFacetCollector.GroupedFacetResult airportResult;
-    
-    for (int limit : new int[] { 2, 10, 100, Integer.MAX_VALUE }) {
+
+    for (int limit : new int[] {2, 10, 100, Integer.MAX_VALUE}) {
       // any of these limits is plenty for the data we have
 
-      groupedAirportFacetCollector = createRandomCollector
-        (useDv ? "hotel_dv" : "hotel", 
-         useDv ? "airport_dv" : "airport", null, false);
+      groupedAirportFacetCollector =
+          createRandomCollector(
+              useDv ? "hotel_dv" : "hotel", useDv ? "airport_dv" : "airport", null, false);
       indexSearcher.search(new MatchAllDocsQuery(), groupedAirportFacetCollector);
       int maxOffset = 5;
-      airportResult = groupedAirportFacetCollector.mergeSegmentResults
-        (Integer.MAX_VALUE == limit ? limit : maxOffset + limit, 0, false);
-      
+      airportResult =
+          groupedAirportFacetCollector.mergeSegmentResults(
+              Integer.MAX_VALUE == limit ? limit : maxOffset + limit, 0, false);
+
       assertEquals(3, airportResult.getTotalCount());
       assertEquals(0, airportResult.getTotalMissingCount());
 
@@ -135,9 +135,12 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       assertEquals(1, entries.get(0).getCount());
     }
 
-    GroupFacetCollector groupedDurationFacetCollector = createRandomCollector(useDv ? "hotel_dv" : "hotel", useDv ? "duration_dv" : "duration", null, false);
+    GroupFacetCollector groupedDurationFacetCollector =
+        createRandomCollector(
+            useDv ? "hotel_dv" : "hotel", useDv ? "duration_dv" : "duration", null, false);
     indexSearcher.search(new MatchAllDocsQuery(), groupedDurationFacetCollector);
-    TermGroupFacetCollector.GroupedFacetResult durationResult = groupedDurationFacetCollector.mergeSegmentResults(10, 0, false);
+    TermGroupFacetCollector.GroupedFacetResult durationResult =
+        groupedDurationFacetCollector.mergeSegmentResults(10, 0, false);
     assertEquals(4, durationResult.getTotalCount());
     assertEquals(0, durationResult.getTotalMissingCount());
 
@@ -181,7 +184,9 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
 
     indexSearcher.getIndexReader().close();
     indexSearcher = newSearcher(w.getReader());
-    groupedAirportFacetCollector = createRandomCollector(useDv ? "hotel_dv" : "hotel", useDv ? "airport_dv" : "airport", null, !useDv);
+    groupedAirportFacetCollector =
+        createRandomCollector(
+            useDv ? "hotel_dv" : "hotel", useDv ? "airport_dv" : "airport", null, !useDv);
     indexSearcher.search(new MatchAllDocsQuery(), groupedAirportFacetCollector);
     airportResult = groupedAirportFacetCollector.mergeSegmentResults(3, 0, true);
     entries = airportResult.getFacetEntries(1, 2);
@@ -202,7 +207,9 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       assertEquals(1, entries.get(1).getCount());
     }
 
-    groupedDurationFacetCollector = createRandomCollector(useDv ? "hotel_dv" : "hotel", useDv ? "duration_dv" : "duration", null, false);
+    groupedDurationFacetCollector =
+        createRandomCollector(
+            useDv ? "hotel_dv" : "hotel", useDv ? "duration_dv" : "duration", null, false);
     indexSearcher.search(new MatchAllDocsQuery(), groupedDurationFacetCollector);
     durationResult = groupedDurationFacetCollector.mergeSegmentResults(10, 2, true);
     assertEquals(5, durationResult.getTotalCount());
@@ -229,7 +236,9 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
 
     indexSearcher.getIndexReader().close();
     indexSearcher = newSearcher(w.getReader());
-    groupedAirportFacetCollector = createRandomCollector(useDv ? "hotel_dv" : "hotel", useDv ? "airport_dv" : "airport", null, false);
+    groupedAirportFacetCollector =
+        createRandomCollector(
+            useDv ? "hotel_dv" : "hotel", useDv ? "airport_dv" : "airport", null, false);
     indexSearcher.search(new MatchAllDocsQuery(), groupedAirportFacetCollector);
     airportResult = groupedAirportFacetCollector.mergeSegmentResults(10, 0, false);
     entries = airportResult.getFacetEntries(0, 10);
@@ -257,7 +266,9 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       assertEquals(2, entries.get(2).getCount());
     }
 
-    groupedDurationFacetCollector = createRandomCollector(useDv ? "hotel_dv" : "hotel", useDv ? "duration_dv" : "duration", "1", false);
+    groupedDurationFacetCollector =
+        createRandomCollector(
+            useDv ? "hotel_dv" : "hotel", useDv ? "duration_dv" : "duration", "1", false);
     indexSearcher.search(new MatchAllDocsQuery(), groupedDurationFacetCollector);
     durationResult = groupedDurationFacetCollector.mergeSegmentResults(10, 0, true);
     assertEquals(5, durationResult.getTotalCount());
@@ -281,10 +292,12 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     customType.setStored(true);
 
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random(),
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(NoMergePolicy.INSTANCE));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random()))
+                .setMergePolicy(NoMergePolicy.INSTANCE));
     boolean useDv = true;
 
     // Cannot assert this since we use NoMergePolicy:
@@ -343,9 +356,11 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
 
     w.close();
     IndexSearcher indexSearcher = newSearcher(DirectoryReader.open(dir));
-    GroupFacetCollector groupedAirportFacetCollector = createRandomCollector(groupField + "_dv", "airport", null, true);
+    GroupFacetCollector groupedAirportFacetCollector =
+        createRandomCollector(groupField + "_dv", "airport", null, true);
     indexSearcher.search(new MatchAllDocsQuery(), groupedAirportFacetCollector);
-    TermGroupFacetCollector.GroupedFacetResult airportResult = groupedAirportFacetCollector.mergeSegmentResults(10, 0, false);
+    TermGroupFacetCollector.GroupedFacetResult airportResult =
+        groupedAirportFacetCollector.mergeSegmentResults(10, 0, false);
     assertEquals(3, airportResult.getTotalCount());
     assertEquals(1, airportResult.getTotalMissingCount());
 
@@ -385,9 +400,11 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
         int limit = random.nextInt(context.facetValues.size());
         int offset = random.nextInt(context.facetValues.size() - limit);
         int size = offset + limit;
-        int minCount = random.nextBoolean() ? 0 : random.nextInt(1 + context.facetWithMostGroups / 10);
+        int minCount =
+            random.nextBoolean() ? 0 : random.nextInt(1 + context.facetWithMostGroups / 10);
         boolean orderByCount = random.nextBoolean();
-        String randomStr = getFromSet(context.facetValues, random.nextInt(context.facetValues.size()));
+        String randomStr =
+            getFromSet(context.facetValues, random.nextInt(context.facetValues.size()));
         final String facetPrefix;
         if (randomStr == null) {
           facetPrefix = null;
@@ -402,13 +419,19 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
           }
         }
 
-        GroupedFacetResult expectedFacetResult = createExpectedFacetResult(searchTerm, context, offset, limit, minCount, orderByCount, facetPrefix);
-        GroupFacetCollector groupFacetCollector = createRandomCollector("group", "facet", facetPrefix, multipleFacetsPerDocument);
+        GroupedFacetResult expectedFacetResult =
+            createExpectedFacetResult(
+                searchTerm, context, offset, limit, minCount, orderByCount, facetPrefix);
+        GroupFacetCollector groupFacetCollector =
+            createRandomCollector("group", "facet", facetPrefix, multipleFacetsPerDocument);
         searcher.search(new TermQuery(new Term("content", searchTerm)), groupFacetCollector);
-        TermGroupFacetCollector.GroupedFacetResult actualFacetResult = groupFacetCollector.mergeSegmentResults(size, minCount, orderByCount);
+        TermGroupFacetCollector.GroupedFacetResult actualFacetResult =
+            groupFacetCollector.mergeSegmentResults(size, minCount, orderByCount);
 
-        List<TermGroupFacetCollector.FacetEntry> expectedFacetEntries = expectedFacetResult.getFacetEntries();
-        List<TermGroupFacetCollector.FacetEntry> actualFacetEntries = actualFacetResult.getFacetEntries(offset, limit);
+        List<TermGroupFacetCollector.FacetEntry> expectedFacetEntries =
+            expectedFacetResult.getFacetEntries();
+        List<TermGroupFacetCollector.FacetEntry> actualFacetEntries =
+            actualFacetResult.getFacetEntries(offset, limit);
 
         if (VERBOSE) {
           System.out.println("Collector: " + groupFacetCollector.getClass().getSimpleName());
@@ -431,11 +454,12 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
           int counter = 0;
           for (TermGroupFacetCollector.FacetEntry expectedFacetEntry : expectedFacetEntries) {
             System.out.println(
-                String.format(Locale.ROOT,
+                String.format(
+                    Locale.ROOT,
                     "%d. Expected facet value %s with count %d",
-                    counter++, expectedFacetEntry.getValue().utf8ToString(), expectedFacetEntry.getCount()
-                )
-            );
+                    counter++,
+                    expectedFacetEntry.getValue().utf8ToString(),
+                    expectedFacetEntry.getCount()));
           }
 
           System.out.println("\n=== Actual: \n");
@@ -444,23 +468,42 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
           counter = 0;
           for (TermGroupFacetCollector.FacetEntry actualFacetEntry : actualFacetEntries) {
             System.out.println(
-                String.format(Locale.ROOT,
+                String.format(
+                    Locale.ROOT,
                     "%d. Actual facet value %s with count %d",
-                    counter++, actualFacetEntry.getValue().utf8ToString(), actualFacetEntry.getCount()
-                )
-            );
+                    counter++,
+                    actualFacetEntry.getValue().utf8ToString(),
+                    actualFacetEntry.getCount()));
           }
-          System.out.println("\n===================================================================================");
+          System.out.println(
+              "\n===================================================================================");
         }
-        
+
         assertEquals(expectedFacetResult.getTotalCount(), actualFacetResult.getTotalCount());
-        assertEquals(expectedFacetResult.getTotalMissingCount(), actualFacetResult.getTotalMissingCount());
+        assertEquals(
+            expectedFacetResult.getTotalMissingCount(), actualFacetResult.getTotalMissingCount());
         assertEquals(expectedFacetEntries.size(), actualFacetEntries.size());
         for (int i = 0; i < expectedFacetEntries.size(); i++) {
           TermGroupFacetCollector.FacetEntry expectedFacetEntry = expectedFacetEntries.get(i);
           TermGroupFacetCollector.FacetEntry actualFacetEntry = actualFacetEntries.get(i);
-          assertEquals("i=" + i + ": " + expectedFacetEntry.getValue().utf8ToString() + " != " + actualFacetEntry.getValue().utf8ToString(), expectedFacetEntry.getValue(), actualFacetEntry.getValue());
-          assertEquals("i=" + i + ": " + expectedFacetEntry.getCount() + " != " + actualFacetEntry.getCount(), expectedFacetEntry.getCount(), actualFacetEntry.getCount());
+          assertEquals(
+              "i="
+                  + i
+                  + ": "
+                  + expectedFacetEntry.getValue().utf8ToString()
+                  + " != "
+                  + actualFacetEntry.getValue().utf8ToString(),
+              expectedFacetEntry.getValue(),
+              actualFacetEntry.getValue());
+          assertEquals(
+              "i="
+                  + i
+                  + ": "
+                  + expectedFacetEntry.getCount()
+                  + " != "
+                  + actualFacetEntry.getCount(),
+              expectedFacetEntry.getCount(),
+              actualFacetEntry.getCount());
         }
       }
 
@@ -469,7 +512,8 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     }
   }
 
-  private IndexContext createIndexContext(boolean multipleFacetValuesPerDocument) throws IOException {
+  private IndexContext createIndexContext(boolean multipleFacetValuesPerDocument)
+      throws IOException {
     final Random random = random();
     final int numDocs = TestUtil.nextInt(random, 138, 1145) * RANDOM_MULTIPLIER;
     final int numGroups = TestUtil.nextInt(random, 1, numDocs / 4);
@@ -499,11 +543,8 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     }
 
     Directory dir = newDirectory();
-    RandomIndexWriter writer = new RandomIndexWriter(
-        random,
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random))
-    );
+    RandomIndexWriter writer =
+        new RandomIndexWriter(random, dir, newIndexWriterConfig(new MockAnalyzer(random)));
     Document doc = new Document();
     Document docNoGroup = new Document();
     Document docNoFacet = new Document();
@@ -524,7 +565,8 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       doc.add(facetFields[1]);
       docNoGroup.add(facetFields[1]);
     } else {
-      facetFields = multipleFacetValuesPerDocument ? new Field[2 + random.nextInt(6)] : new Field[1];
+      facetFields =
+          multipleFacetValuesPerDocument ? new Field[2 + random.nextInt(6)] : new Field[1];
       for (int i = 0; i < facetFields.length; i++) {
         facetFields[i] = new SortedSetDocValuesField("facet", new BytesRef());
         doc.add(facetFields[i]);
@@ -537,22 +579,23 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     docNoFacet.add(content);
     docNoGroupNoFacet.add(content);
 
-    NavigableSet<String> uniqueFacetValues = new TreeSet<>(new Comparator<String>() {
-
-      @Override
-      public int compare(String a, String b) {
-        if (a == b) {
-          return 0;
-        } else if (a == null) {
-          return -1;
-        } else if (b == null) {
-          return 1;
-        } else {
-          return a.compareTo(b);
-        }
-      }
-
-    });
+    NavigableSet<String> uniqueFacetValues =
+        new TreeSet<>(
+            new Comparator<String>() {
+
+              @Override
+              public int compare(String a, String b) {
+                if (a == b) {
+                  return 0;
+                } else if (a == null) {
+                  return -1;
+                } else if (b == null) {
+                  return 1;
+                } else {
+                  return a.compareTo(b);
+                }
+              }
+            });
     Map<String, Map<String, Set<String>>> searchTermToFacetToGroups = new HashMap<>();
     int facetWithMostGroups = 0;
     for (int i = 0; i < numDocs; i++) {
@@ -604,7 +647,13 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       }
 
       if (VERBOSE) {
-        System.out.println("  doc content=" + contentStr + " group=" + (groupValue == null ? "null" : groupValue) + " facetVals=" + facetVals);
+        System.out.println(
+            "  doc content="
+                + contentStr
+                + " group="
+                + (groupValue == null ? "null" : groupValue)
+                + " facetVals="
+                + facetVals);
       }
 
       if (groupValue != null) {
@@ -630,10 +679,25 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     DirectoryReader reader = writer.getReader();
     writer.close();
 
-    return new IndexContext(searchTermToFacetToGroups, reader, numDocs, dir, facetWithMostGroups, numGroups, contentBrs, uniqueFacetValues);
+    return new IndexContext(
+        searchTermToFacetToGroups,
+        reader,
+        numDocs,
+        dir,
+        facetWithMostGroups,
+        numGroups,
+        contentBrs,
+        uniqueFacetValues);
   }
 
-  private GroupedFacetResult createExpectedFacetResult(String searchTerm, IndexContext context, int offset, int limit, int minCount, final boolean orderByCount, String facetPrefix) {
+  private GroupedFacetResult createExpectedFacetResult(
+      String searchTerm,
+      IndexContext context,
+      int offset,
+      int limit,
+      int minCount,
+      final boolean orderByCount,
+      String facetPrefix) {
     Map<String, Set<String>> facetGroups = context.searchTermToFacetGroups.get(searchTerm);
     if (facetGroups == null) {
       facetGroups = new HashMap<>();
@@ -676,20 +740,22 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       }
     }
 
-    Collections.sort(entries, new Comparator<TermGroupFacetCollector.FacetEntry>() {
-
-      @Override
-      public int compare(TermGroupFacetCollector.FacetEntry a, TermGroupFacetCollector.FacetEntry b) {
-        if (orderByCount) {
-          int cmp = b.getCount() - a.getCount();
-          if (cmp != 0) {
-            return cmp;
+    Collections.sort(
+        entries,
+        new Comparator<TermGroupFacetCollector.FacetEntry>() {
+
+          @Override
+          public int compare(
+              TermGroupFacetCollector.FacetEntry a, TermGroupFacetCollector.FacetEntry b) {
+            if (orderByCount) {
+              int cmp = b.getCount() - a.getCount();
+              if (cmp != 0) {
+                return cmp;
+              }
+            }
+            return a.getValue().compareTo(b.getValue());
           }
-        }
-        return a.getValue().compareTo(b.getValue());
-      }
-
-    });
+        });
 
     int endOffset = offset + limit;
     List<TermGroupFacetCollector.FacetEntry> entriesResult;
@@ -703,9 +769,11 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     return new GroupedFacetResult(totalCount, totalMissCount, entriesResult);
   }
 
-  private GroupFacetCollector createRandomCollector(String groupField, String facetField, String facetPrefix, boolean multipleFacetsPerDocument) {
+  private GroupFacetCollector createRandomCollector(
+      String groupField, String facetField, String facetPrefix, boolean multipleFacetsPerDocument) {
     BytesRef facetPrefixBR = facetPrefix == null ? null : new BytesRef(facetPrefix);
-    return TermGroupFacetCollector.createTermGroupFacetCollector(groupField, facetField, multipleFacetsPerDocument, facetPrefixBR, random().nextInt(1024));
+    return TermGroupFacetCollector.createTermGroupFacetCollector(
+        groupField, facetField, multipleFacetsPerDocument, facetPrefixBR, random().nextInt(1024));
   }
 
   private String getFromSet(Set<String> set, int index) {
@@ -730,8 +798,15 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     final int numGroups;
     final String[] contentStrings;
 
-    public IndexContext(Map<String, Map<String, Set<String>>> searchTermToFacetGroups, DirectoryReader r,
-                        int numDocs, Directory dir, int facetWithMostGroups, int numGroups, String[] contentStrings, NavigableSet<String> facetValues) {
+    public IndexContext(
+        Map<String, Map<String, Set<String>>> searchTermToFacetGroups,
+        DirectoryReader r,
+        int numDocs,
+        Directory dir,
+        int facetWithMostGroups,
+        int numGroups,
+        String[] contentStrings,
+        NavigableSet<String> facetValues) {
       this.searchTermToFacetGroups = searchTermToFacetGroups;
       this.indexReader = r;
       this.numDocs = numDocs;
@@ -749,7 +824,10 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
     final int totalMissingCount;
     final List<TermGroupFacetCollector.FacetEntry> facetEntries;
 
-    private GroupedFacetResult(int totalCount, int totalMissingCount, List<TermGroupFacetCollector.FacetEntry> facetEntries) {
+    private GroupedFacetResult(
+        int totalCount,
+        int totalMissingCount,
+        List<TermGroupFacetCollector.FacetEntry> facetEntries) {
       this.totalCount = totalCount;
       this.totalMissingCount = totalMissingCount;
       this.facetEntries = facetEntries;
@@ -767,5 +845,4 @@ public class TestGroupFacetCollector extends AbstractGroupingTestCase {
       return facetEntries;
     }
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
index 4ef6c02..df53dff 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
@@ -27,7 +27,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -84,10 +83,11 @@ public class TestGrouping extends LuceneTestCase {
     customType.setStored(true);
 
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-                               random(),
-                               dir,
-                               newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
     // 0
     Document doc = new Document();
     addGroupField(doc, groupField, "author1");
@@ -143,10 +143,12 @@ public class TestGrouping extends LuceneTestCase {
 
     final Sort groupSort = Sort.RELEVANCE;
 
-    final FirstPassGroupingCollector<?> c1 = createRandomFirstPassCollector(groupField, groupSort, 10);
+    final FirstPassGroupingCollector<?> c1 =
+        createRandomFirstPassCollector(groupField, groupSort, 10);
     indexSearcher.search(new TermQuery(new Term("content", "random")), c1);
 
-    final TopGroupsCollector<?> c2 = createSecondPassCollector(c1, groupSort, Sort.RELEVANCE, 0, 5, true);
+    final TopGroupsCollector<?> c2 =
+        createSecondPassCollector(c1, groupSort, Sort.RELEVANCE, 0, 5, true);
     indexSearcher.search(new TermQuery(new Term("content", "random")), c2);
 
     final TopGroups<?> groups = c2.getTopGroups(0);
@@ -194,49 +196,74 @@ public class TestGrouping extends LuceneTestCase {
     doc.add(new SortedDocValuesField(groupField, new BytesRef(value)));
   }
 
-  private FirstPassGroupingCollector<?> createRandomFirstPassCollector(String groupField, Sort groupSort, int topDocs) throws IOException {
+  private FirstPassGroupingCollector<?> createRandomFirstPassCollector(
+      String groupField, Sort groupSort, int topDocs) throws IOException {
     if (random().nextBoolean()) {
       ValueSource vs = new BytesRefFieldSource(groupField);
-      return new FirstPassGroupingCollector<>(new ValueSourceGroupSelector(vs, new HashMap<>()), groupSort, topDocs);
+      return new FirstPassGroupingCollector<>(
+          new ValueSourceGroupSelector(vs, new HashMap<>()), groupSort, topDocs);
     } else {
-      return new FirstPassGroupingCollector<>(new TermGroupSelector(groupField), groupSort, topDocs);
+      return new FirstPassGroupingCollector<>(
+          new TermGroupSelector(groupField), groupSort, topDocs);
     }
   }
 
-  private FirstPassGroupingCollector<?> createFirstPassCollector(String groupField, Sort groupSort, int topDocs, FirstPassGroupingCollector<?> firstPassGroupingCollector) throws IOException {
+  private FirstPassGroupingCollector<?> createFirstPassCollector(
+      String groupField,
+      Sort groupSort,
+      int topDocs,
+      FirstPassGroupingCollector<?> firstPassGroupingCollector)
+      throws IOException {
     GroupSelector<?> selector = firstPassGroupingCollector.getGroupSelector();
     if (TermGroupSelector.class.isAssignableFrom(selector.getClass())) {
       ValueSource vs = new BytesRefFieldSource(groupField);
-      return new FirstPassGroupingCollector<>(new ValueSourceGroupSelector(vs, new HashMap<>()), groupSort, topDocs);
+      return new FirstPassGroupingCollector<>(
+          new ValueSourceGroupSelector(vs, new HashMap<>()), groupSort, topDocs);
     } else {
-      return new FirstPassGroupingCollector<>(new TermGroupSelector(groupField), groupSort, topDocs);
+      return new FirstPassGroupingCollector<>(
+          new TermGroupSelector(groupField), groupSort, topDocs);
     }
   }
 
-  @SuppressWarnings({"unchecked","rawtypes"})
-  private <T> TopGroupsCollector<T> createSecondPassCollector(FirstPassGroupingCollector firstPassGroupingCollector,
-                                                                       Sort groupSort,
-                                                                       Sort sortWithinGroup,
-                                                                       int groupOffset,
-                                                                       int maxDocsPerGroup,
-                                                                       boolean getMaxScores) throws IOException {
+  @SuppressWarnings({"unchecked", "rawtypes"})
+  private <T> TopGroupsCollector<T> createSecondPassCollector(
+      FirstPassGroupingCollector firstPassGroupingCollector,
+      Sort groupSort,
+      Sort sortWithinGroup,
+      int groupOffset,
+      int maxDocsPerGroup,
+      boolean getMaxScores)
+      throws IOException {
 
     Collection<SearchGroup<T>> searchGroups = firstPassGroupingCollector.getTopGroups(groupOffset);
-    return new TopGroupsCollector<>(firstPassGroupingCollector.getGroupSelector(), searchGroups, groupSort, sortWithinGroup, maxDocsPerGroup, getMaxScores);
+    return new TopGroupsCollector<>(
+        firstPassGroupingCollector.getGroupSelector(),
+        searchGroups,
+        groupSort,
+        sortWithinGroup,
+        maxDocsPerGroup,
+        getMaxScores);
   }
 
   // Basically converts searchGroups from MutableValue to BytesRef if grouping by ValueSource
   @SuppressWarnings("unchecked")
-  private TopGroupsCollector<?> createSecondPassCollector(FirstPassGroupingCollector<?> firstPassGroupingCollector,
-                                                                   String groupField,
-                                                                   Collection<SearchGroup<BytesRef>> searchGroups,
-                                                                   Sort groupSort,
-                                                                   Sort sortWithinGroup,
-                                                                   int maxDocsPerGroup,
-                                                                   boolean getMaxScores) throws IOException {
-    if (firstPassGroupingCollector.getGroupSelector().getClass().isAssignableFrom(TermGroupSelector.class)) {
-      GroupSelector<BytesRef> selector = (GroupSelector<BytesRef>) firstPassGroupingCollector.getGroupSelector();
-      return new TopGroupsCollector<>(selector, searchGroups, groupSort, sortWithinGroup, maxDocsPerGroup, getMaxScores);
+  private TopGroupsCollector<?> createSecondPassCollector(
+      FirstPassGroupingCollector<?> firstPassGroupingCollector,
+      String groupField,
+      Collection<SearchGroup<BytesRef>> searchGroups,
+      Sort groupSort,
+      Sort sortWithinGroup,
+      int maxDocsPerGroup,
+      boolean getMaxScores)
+      throws IOException {
+    if (firstPassGroupingCollector
+        .getGroupSelector()
+        .getClass()
+        .isAssignableFrom(TermGroupSelector.class)) {
+      GroupSelector<BytesRef> selector =
+          (GroupSelector<BytesRef>) firstPassGroupingCollector.getGroupSelector();
+      return new TopGroupsCollector<>(
+          selector, searchGroups, groupSort, sortWithinGroup, maxDocsPerGroup, getMaxScores);
     } else {
       ValueSource vs = new BytesRefFieldSource(groupField);
       List<SearchGroup<MutableValue>> mvalSearchGroups = new ArrayList<>(searchGroups.size());
@@ -253,12 +280,13 @@ public class TestGrouping extends LuceneTestCase {
         mvalSearchGroups.add(sg);
       }
       ValueSourceGroupSelector selector = new ValueSourceGroupSelector(vs, new HashMap<>());
-      return new TopGroupsCollector<>(selector, mvalSearchGroups, groupSort, sortWithinGroup, maxDocsPerGroup, getMaxScores);
+      return new TopGroupsCollector<>(
+          selector, mvalSearchGroups, groupSort, sortWithinGroup, maxDocsPerGroup, getMaxScores);
     }
   }
 
-  private AllGroupsCollector<?> createAllGroupsCollector(FirstPassGroupingCollector<?> firstPassGroupingCollector,
-                                                         String groupField) {
+  private AllGroupsCollector<?> createAllGroupsCollector(
+      FirstPassGroupingCollector<?> firstPassGroupingCollector, String groupField) {
     return new AllGroupsCollector<>(firstPassGroupingCollector.getGroupSelector());
   }
 
@@ -285,15 +313,18 @@ public class TestGrouping extends LuceneTestCase {
     }
   }
 
-  private Collection<SearchGroup<BytesRef>> getSearchGroups(FirstPassGroupingCollector<?> c, int groupOffset) throws IOException {
+  private Collection<SearchGroup<BytesRef>> getSearchGroups(
+      FirstPassGroupingCollector<?> c, int groupOffset) throws IOException {
     if (TermGroupSelector.class.isAssignableFrom(c.getGroupSelector().getClass())) {
       @SuppressWarnings("unchecked")
       FirstPassGroupingCollector<BytesRef> collector = (FirstPassGroupingCollector<BytesRef>) c;
       return collector.getTopGroups(groupOffset);
     } else if (ValueSourceGroupSelector.class.isAssignableFrom(c.getGroupSelector().getClass())) {
       @SuppressWarnings("unchecked")
-      FirstPassGroupingCollector<MutableValue> collector = (FirstPassGroupingCollector<MutableValue>) c;
-      Collection<SearchGroup<MutableValue>> mutableValueGroups = collector.getTopGroups(groupOffset);
+      FirstPassGroupingCollector<MutableValue> collector =
+          (FirstPassGroupingCollector<MutableValue>) c;
+      Collection<SearchGroup<MutableValue>> mutableValueGroups =
+          collector.getTopGroups(groupOffset);
       if (mutableValueGroups == null) {
         return null;
       }
@@ -301,7 +332,10 @@ public class TestGrouping extends LuceneTestCase {
       List<SearchGroup<BytesRef>> groups = new ArrayList<>(mutableValueGroups.size());
       for (SearchGroup<MutableValue> mutableValueGroup : mutableValueGroups) {
         SearchGroup<BytesRef> sg = new SearchGroup<>();
-        sg.groupValue = mutableValueGroup.groupValue.exists() ? ((MutableValueStr) mutableValueGroup.groupValue).value.get() : null;
+        sg.groupValue =
+            mutableValueGroup.groupValue.exists()
+                ? ((MutableValueStr) mutableValueGroup.groupValue).value.get()
+                : null;
         sg.sortValues = mutableValueGroup.sortValues;
         groups.add(sg);
       }
@@ -321,12 +355,27 @@ public class TestGrouping extends LuceneTestCase {
       TopGroups<MutableValue> mvalTopGroups = collector.getTopGroups(withinGroupOffset);
       List<GroupDocs<BytesRef>> groups = new ArrayList<>(mvalTopGroups.groups.length);
       for (GroupDocs<MutableValue> mvalGd : mvalTopGroups.groups) {
-        BytesRef groupValue = mvalGd.groupValue.exists() ? ((MutableValueStr) mvalGd.groupValue).value.get() : null;
-        groups.add(new GroupDocs<>(Float.NaN, mvalGd.maxScore, mvalGd.totalHits, mvalGd.scoreDocs, groupValue, mvalGd.groupSortValues));
+        BytesRef groupValue =
+            mvalGd.groupValue.exists() ? ((MutableValueStr) mvalGd.groupValue).value.get() : null;
+        groups.add(
+            new GroupDocs<>(
+                Float.NaN,
+                mvalGd.maxScore,
+                mvalGd.totalHits,
+                mvalGd.scoreDocs,
+                groupValue,
+                mvalGd.groupSortValues));
       }
-      // NOTE: currenlty using diamond operator on MergedIterator (without explicit Term class) causes
+      // NOTE: currenlty using diamond operator on MergedIterator (without explicit Term class)
+      // causes
       // errors on Eclipse Compiler (ecj) used for javadoc lint
-      return new TopGroups<BytesRef>(mvalTopGroups.groupSort, mvalTopGroups.withinGroupSort, mvalTopGroups.totalHitCount, mvalTopGroups.totalGroupedHitCount, groups.toArray(new GroupDocs[groups.size()]), Float.NaN);
+      return new TopGroups<BytesRef>(
+          mvalTopGroups.groupSort,
+          mvalTopGroups.withinGroupSort,
+          mvalTopGroups.totalHitCount,
+          mvalTopGroups.totalGroupedHitCount,
+          groups.toArray(new GroupDocs[groups.size()]),
+          Float.NaN);
     }
     fail();
     return null;
@@ -377,7 +426,7 @@ public class TestGrouping extends LuceneTestCase {
     return new Comparator<GroupDoc>() {
       @Override
       public int compare(GroupDoc d1, GroupDoc d2) {
-        for(SortField sf : sortFields) {
+        for (SortField sf : sortFields) {
           final int cmp;
           if (sf.getType() == SortField.Type.SCORE) {
             if (d1.score > d2.score) {
@@ -406,11 +455,11 @@ public class TestGrouping extends LuceneTestCase {
     };
   }
 
-  @SuppressWarnings({"unchecked","rawtypes"})
+  @SuppressWarnings({"unchecked", "rawtypes"})
   private Comparable<?>[] fillFields(GroupDoc d, Sort sort) {
     final SortField[] sortFields = sort.getSort();
     final Comparable<?>[] fields = new Comparable[sortFields.length];
-    for(int fieldIDX=0;fieldIDX<sortFields.length;fieldIDX++) {
+    for (int fieldIDX = 0; fieldIDX < sortFields.length; fieldIDX++) {
       final Comparable<?> c;
       final SortField sf = sortFields[fieldIDX];
       if (sf.getType() == SortField.Type.SCORE) {
@@ -436,46 +485,47 @@ public class TestGrouping extends LuceneTestCase {
     }
   }
 
-  private TopGroups<BytesRef> slowGrouping(GroupDoc[] groupDocs,
-                                           String searchTerm,
-                                           boolean getMaxScores,
-                                           boolean doAllGroups,
-                                           Sort groupSort,
-                                           Sort docSort,
-                                           int topNGroups,
-                                           int docsPerGroup,
-                                           int groupOffset,
-                                           int docOffset) {
+  private TopGroups<BytesRef> slowGrouping(
+      GroupDoc[] groupDocs,
+      String searchTerm,
+      boolean getMaxScores,
+      boolean doAllGroups,
+      Sort groupSort,
+      Sort docSort,
+      int topNGroups,
+      int docsPerGroup,
+      int groupOffset,
+      int docOffset) {
 
     final Comparator<GroupDoc> groupSortComp = getComparator(groupSort);
 
     Arrays.sort(groupDocs, groupSortComp);
-    final HashMap<BytesRef,List<GroupDoc>> groups = new HashMap<>();
+    final HashMap<BytesRef, List<GroupDoc>> groups = new HashMap<>();
     final List<BytesRef> sortedGroups = new ArrayList<>();
     final List<Comparable<?>[]> sortedGroupFields = new ArrayList<>();
 
     int totalHitCount = 0;
     Set<BytesRef> knownGroups = new HashSet<>();
 
-    //System.out.println("TEST: slowGrouping");
-    for(GroupDoc d : groupDocs) {
+    // System.out.println("TEST: slowGrouping");
+    for (GroupDoc d : groupDocs) {
       // TODO: would be better to filter by searchTerm before sorting!
       if (!d.content.startsWith(searchTerm)) {
         continue;
       }
       totalHitCount++;
-      //System.out.println("  match id=" + d.id + " score=" + d.score);
+      // System.out.println("  match id=" + d.id + " score=" + d.score);
 
       if (doAllGroups) {
         if (!knownGroups.contains(d.group)) {
           knownGroups.add(d.group);
-          //System.out.println("    add group=" + groupToString(d.group));
+          // System.out.println("    add group=" + groupToString(d.group));
         }
       }
 
       List<GroupDoc> l = groups.get(d.group);
       if (l == null) {
-        //System.out.println("    add sortedGroup=" + groupToString(d.group));
+        // System.out.println("    add sortedGroup=" + groupToString(d.group));
         sortedGroups.add(d.group);
         sortedGroupFields.add(fillFields(d, groupSort));
         l = new ArrayList<>();
@@ -492,10 +542,10 @@ public class TestGrouping extends LuceneTestCase {
     final int limit = Math.min(groupOffset + topNGroups, groups.size());
 
     final Comparator<GroupDoc> docSortComp = getComparator(docSort);
-    @SuppressWarnings({"unchecked","rawtypes"})
-    final GroupDocs<BytesRef>[] result = new GroupDocs[limit-groupOffset];
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    final GroupDocs<BytesRef>[] result = new GroupDocs[limit - groupOffset];
     int totalGroupedHitCount = 0;
-    for(int idx=groupOffset;idx < limit;idx++) {
+    for (int idx = groupOffset; idx < limit; idx++) {
       final BytesRef group = sortedGroups.get(idx);
       final List<GroupDoc> docs = groups.get(group);
       totalGroupedHitCount += docs.size();
@@ -504,41 +554,55 @@ public class TestGrouping extends LuceneTestCase {
       if (docs.size() > docOffset) {
         final int docIDXLimit = Math.min(docOffset + docsPerGroup, docs.size());
         hits = new ScoreDoc[docIDXLimit - docOffset];
-        for(int docIDX=docOffset; docIDX < docIDXLimit; docIDX++) {
+        for (int docIDX = docOffset; docIDX < docIDXLimit; docIDX++) {
           final GroupDoc d = docs.get(docIDX);
           final FieldDoc fd;
           fd = new FieldDoc(d.id, Float.NaN, fillFields(d, docSort));
-          hits[docIDX-docOffset] = fd;
+          hits[docIDX - docOffset] = fd;
         }
-      } else  {
+      } else {
         hits = new ScoreDoc[0];
       }
 
-      result[idx-groupOffset] = new GroupDocs<>(Float.NaN,
-                                                        0.0f,
-                                                        new TotalHits(docs.size(), TotalHits.Relation.EQUAL_TO),
-                                                        hits,
-                                                        group,
-                                                        sortedGroupFields.get(idx));
+      result[idx - groupOffset] =
+          new GroupDocs<>(
+              Float.NaN,
+              0.0f,
+              new TotalHits(docs.size(), TotalHits.Relation.EQUAL_TO),
+              hits,
+              group,
+              sortedGroupFields.get(idx));
     }
 
     if (doAllGroups) {
       return new TopGroups<>(
-        new TopGroups<>(groupSort.getSort(), docSort.getSort(), totalHitCount, totalGroupedHitCount, result, Float.NaN),
-          knownGroups.size()
-      );
+          new TopGroups<>(
+              groupSort.getSort(),
+              docSort.getSort(),
+              totalHitCount,
+              totalGroupedHitCount,
+              result,
+              Float.NaN),
+          knownGroups.size());
     } else {
-      return new TopGroups<>(groupSort.getSort(), docSort.getSort(), totalHitCount, totalGroupedHitCount, result, Float.NaN);
+      return new TopGroups<>(
+          groupSort.getSort(),
+          docSort.getSort(),
+          totalHitCount,
+          totalGroupedHitCount,
+          result,
+          Float.NaN);
     }
   }
 
-  private DirectoryReader getDocBlockReader(Directory dir, GroupDoc[] groupDocs) throws IOException {
+  private DirectoryReader getDocBlockReader(Directory dir, GroupDoc[] groupDocs)
+      throws IOException {
     // Coalesce by group, but in random order:
     Collections.shuffle(Arrays.asList(groupDocs), random());
-    final Map<BytesRef,List<GroupDoc>> groupMap = new HashMap<>();
+    final Map<BytesRef, List<GroupDoc>> groupMap = new HashMap<>();
     final List<BytesRef> groupValues = new ArrayList<>();
 
-    for(GroupDoc groupDoc : groupDocs) {
+    for (GroupDoc groupDoc : groupDocs) {
       if (!groupMap.containsKey(groupDoc.group)) {
         groupValues.add(groupDoc.group);
         groupMap.put(groupDoc.group, new ArrayList<GroupDoc>());
@@ -546,10 +610,8 @@ public class TestGrouping extends LuceneTestCase {
       groupMap.get(groupDoc.group).add(groupDoc);
     }
 
-    RandomIndexWriter w = new RandomIndexWriter(
-                                                random(),
-                                                dir,
-                                                newIndexWriterConfig(new MockAnalyzer(random())));
+    RandomIndexWriter w =
+        new RandomIndexWriter(random(), dir, newIndexWriterConfig(new MockAnalyzer(random())));
 
     final List<List<Document>> updateDocs = new ArrayList<>();
 
@@ -557,11 +619,11 @@ public class TestGrouping extends LuceneTestCase {
     groupEndType.setIndexOptions(IndexOptions.DOCS);
     groupEndType.setOmitNorms(true);
 
-    //System.out.println("TEST: index groups");
-    for(BytesRef group : groupValues) {
+    // System.out.println("TEST: index groups");
+    for (BytesRef group : groupValues) {
       final List<Document> docs = new ArrayList<>();
-      //System.out.println("TEST:   group=" + (group == null ? "null" : group.utf8ToString()));
-      for(GroupDoc groupValue : groupMap.get(group)) {
+      // System.out.println("TEST:   group=" + (group == null ? "null" : group.utf8ToString()));
+      for (GroupDoc groupValue : groupMap.get(group)) {
         Document doc = new Document();
         docs.add(doc);
         if (groupValue.group != null) {
@@ -574,11 +636,13 @@ public class TestGrouping extends LuceneTestCase {
         doc.add(new SortedDocValuesField("sort2", BytesRef.deepCopyOf(groupValue.sort2)));
         doc.add(new NumericDocValuesField("id", groupValue.id));
         doc.add(newTextField("content", groupValue.content, Field.Store.NO));
-        //System.out.println("TEST:     doc content=" + groupValue.content + " group=" + (groupValue.group == null ? "null" : groupValue.group.utf8ToString()) + " sort1=" + groupValue.sort1.utf8ToString() + " id=" + groupValue.id);
+        // System.out.println("TEST:     doc content=" + groupValue.content + " group=" +
+        // (groupValue.group == null ? "null" : groupValue.group.utf8ToString()) + " sort1=" +
+        // groupValue.sort1.utf8ToString() + " id=" + groupValue.id);
       }
       // So we can pull filter marking last doc in block:
       final Field groupEnd = newField("groupend", "x", groupEndType);
-      docs.get(docs.size()-1).add(groupEnd);
+      docs.get(docs.size() - 1).add(groupEnd);
       // Add as a doc block:
       w.addDocuments(docs);
       if (group != null && random().nextInt(7) == 4) {
@@ -586,7 +650,7 @@ public class TestGrouping extends LuceneTestCase {
       }
     }
 
-    for(List<Document> docs : updateDocs) {
+    for (List<Document> docs : updateDocs) {
       // Just replaces docs w/ same docs:
       w.updateDocuments(new Term("group", docs.get(0).get("group")), docs);
     }
@@ -606,27 +670,27 @@ public class TestGrouping extends LuceneTestCase {
       final IndexReaderContext ctx = s.getTopReaderContext();
       final List<LeafReaderContext> leaves = ctx.leaves();
       subSearchers = new ShardSearcher[leaves.size()];
-      for(int searcherIDX=0;searcherIDX<subSearchers.length;searcherIDX++) {
+      for (int searcherIDX = 0; searcherIDX < subSearchers.length; searcherIDX++) {
         subSearchers[searcherIDX] = new ShardSearcher(leaves.get(searcherIDX), ctx);
       }
 
       docStarts = new int[subSearchers.length];
-      for(int subIDX=0;subIDX<docStarts.length;subIDX++) {
+      for (int subIDX = 0; subIDX < docStarts.length; subIDX++) {
         docStarts[subIDX] = leaves.get(subIDX).docBase;
-        //System.out.println("docStarts[" + subIDX + "]=" + docStarts[subIDX]);
+        // System.out.println("docStarts[" + subIDX + "]=" + docStarts[subIDX]);
       }
     }
   }
 
   public void testRandom() throws Exception {
     int numberOfRuns = atLeast(1);
-    for (int iter=0; iter<numberOfRuns; iter++) {
+    for (int iter = 0; iter < numberOfRuns; iter++) {
       if (VERBOSE) {
         System.out.println("TEST: iter=" + iter);
       }
 
       final int numDocs = atLeast(100);
-      //final int numDocs = _TestUtil.nextInt(random, 5, 20);
+      // final int numDocs = _TestUtil.nextInt(random, 5, 20);
 
       final int numGroups = TestUtil.nextInt(random(), 1, numDocs);
 
@@ -635,14 +699,15 @@ public class TestGrouping extends LuceneTestCase {
       }
 
       final List<BytesRef> groups = new ArrayList<>();
-      for(int i=0;i<numGroups;i++) {
+      for (int i = 0; i < numGroups; i++) {
         String randomValue;
         do {
-          // B/c of DV based impl we can't see the difference between an empty string and a null value.
+          // B/c of DV based impl we can't see the difference between an empty string and a null
+          // value.
           // For that reason we don't generate empty string
           // groups.
           randomValue = TestUtil.randomRealisticUnicodeString(random());
-          //randomValue = TestUtil.randomSimpleString(random());
+          // randomValue = TestUtil.randomSimpleString(random());
         } while ("".equals(randomValue));
 
         groups.add(new BytesRef(randomValue));
@@ -651,11 +716,11 @@ public class TestGrouping extends LuceneTestCase {
       if (VERBOSE) {
         System.out.println("TEST: create fake content");
       }
-      for(int contentIDX=0;contentIDX<contentStrings.length;contentIDX++) {
+      for (int contentIDX = 0; contentIDX < contentStrings.length; contentIDX++) {
         final StringBuilder sb = new StringBuilder();
         sb.append("real").append(random().nextInt(3)).append(' ');
         final int fakeCount = random().nextInt(10);
-        for(int fakeIDX=0;fakeIDX<fakeCount;fakeIDX++) {
+        for (int fakeIDX = 0; fakeIDX < fakeCount; fakeIDX++) {
           sb.append("fake ");
         }
         contentStrings[contentIDX] = sb.toString();
@@ -665,10 +730,8 @@ public class TestGrouping extends LuceneTestCase {
       }
 
       Directory dir = newDirectory();
-      RandomIndexWriter w = new RandomIndexWriter(
-                                                  random(),
-                                                  dir,
-                                                  newIndexWriterConfig(new MockAnalyzer(random())));
+      RandomIndexWriter w =
+          new RandomIndexWriter(random(), dir, newIndexWriterConfig(new MockAnalyzer(random())));
       Document doc = new Document();
       Document docNoGroup = new Document();
       Field idvGroupField = new SortedDocValuesField("group", new BytesRef());
@@ -690,7 +753,7 @@ public class TestGrouping extends LuceneTestCase {
       doc.add(idDV);
       docNoGroup.add(idDV);
       final GroupDoc[] groupDocs = new GroupDoc[numDocs];
-      for(int i=0;i<numDocs;i++) {
+      for (int i = 0; i < numDocs; i++) {
         final BytesRef groupValue;
         if (random().nextInt(24) == 17) {
           // So we test the "doc doesn't have the group'd
@@ -699,13 +762,25 @@ public class TestGrouping extends LuceneTestCase {
         } else {
           groupValue = groups.get(random().nextInt(groups.size()));
         }
-        final GroupDoc groupDoc = new GroupDoc(i,
-                                               groupValue,
-                                               groups.get(random().nextInt(groups.size())),
-                                               groups.get(random().nextInt(groups.size())),
-                                               contentStrings[random().nextInt(contentStrings.length)]);
+        final GroupDoc groupDoc =
+            new GroupDoc(
+                i,
+                groupValue,
+                groups.get(random().nextInt(groups.size())),
+                groups.get(random().nextInt(groups.size())),
+                contentStrings[random().nextInt(contentStrings.length)]);
         if (VERBOSE) {
-          System.out.println("  doc content=" + groupDoc.content + " id=" + i + " group=" + (groupDoc.group == null ? "null" : groupDoc.group.utf8ToString()) + " sort1=" + groupDoc.sort1.utf8ToString() + " sort2=" + groupDoc.sort2.utf8ToString());
+          System.out.println(
+              "  doc content="
+                  + groupDoc.content
+                  + " id="
+                  + i
+                  + " group="
+                  + (groupDoc.group == null ? "null" : groupDoc.group.utf8ToString())
+                  + " sort1="
+                  + groupDoc.sort1.utf8ToString()
+                  + " sort2="
+                  + groupDoc.sort2.utf8ToString());
         }
 
         groupDocs[i] = groupDoc;
@@ -735,10 +810,10 @@ public class TestGrouping extends LuceneTestCase {
 
       final DirectoryReader r = w.getReader();
       w.close();
-      
+
       NumericDocValues values = MultiDocValues.getNumericValues(r, "id");
       int[] docIDToID = new int[r.maxDoc()];
-      for(int i=0;i<r.maxDoc();i++) {
+      for (int i = 0; i < r.maxDoc(); i++) {
         assertEquals(i, values.nextDoc());
         docIDToID[i] = (int) values.longValue();
       }
@@ -752,13 +827,14 @@ public class TestGrouping extends LuceneTestCase {
       if (VERBOSE) {
         System.out.println("\nTEST: searcher=" + s);
       }
-      
+
       final ShardState shards = new ShardState(s);
-      
+
       Set<Integer> seenIDs = new HashSet<>();
-      for(int contentID=0;contentID<3;contentID++) {
-        final ScoreDoc[] hits = s.search(new TermQuery(new Term("content", "real"+contentID)), numDocs).scoreDocs;
-        for(ScoreDoc hit : hits) {
+      for (int contentID = 0; contentID < 3; contentID++) {
+        final ScoreDoc[] hits =
+            s.search(new TermQuery(new Term("content", "real" + contentID)), numDocs).scoreDocs;
+        for (ScoreDoc hit : hits) {
           int idValue = docIDToID[hit.doc];
 
           final GroupDoc gd = groupDocs[idValue];
@@ -768,111 +844,141 @@ public class TestGrouping extends LuceneTestCase {
           assertEquals(gd.id, idValue);
         }
       }
-      
+
       // make sure all groups were seen across the hits
       assertEquals(groupDocs.length, seenIDs.size());
 
-      for(GroupDoc gd : groupDocs) {
+      for (GroupDoc gd : groupDocs) {
         assertTrue(Float.isFinite(gd.score));
         assertTrue(gd.score >= 0.0);
       }
-      
+
       // Build 2nd index, where docs are added in blocks by
       // group, so we can use single pass collector
       dirBlocks = newDirectory();
       rBlocks = getDocBlockReader(dirBlocks, groupDocs);
       final Query lastDocInBlock = new TermQuery(new Term("groupend", "x"));
-      
+
       final IndexSearcher sBlocks = newSearcher(rBlocks);
       // This test relies on the fact that longer fields produce lower scores
       sBlocks.setSimilarity(new BM25Similarity());
 
       final ShardState shardsBlocks = new ShardState(sBlocks);
-      
+
       // ReaderBlocks only increases maxDoc() vs reader, which
       // means a monotonic shift in scores, so we can
       // reliably remap them w/ Map:
-      final Map<String,Map<Float,Float>> scoreMap = new HashMap<>();
+      final Map<String, Map<Float, Float>> scoreMap = new HashMap<>();
 
       values = MultiDocValues.getNumericValues(rBlocks, "id");
       assertNotNull(values);
       int[] docIDToIDBlocks = new int[rBlocks.maxDoc()];
-      for(int i=0;i<rBlocks.maxDoc();i++) {
+      for (int i = 0; i < rBlocks.maxDoc(); i++) {
         assertEquals(i, values.nextDoc());
         docIDToIDBlocks[i] = (int) values.longValue();
       }
-      
+
       // Tricky: must separately set .score2, because the doc
       // block index was created with possible deletions!
-      //System.out.println("fixup score2");
-      for(int contentID=0;contentID<3;contentID++) {
-        //System.out.println("  term=real" + contentID);
-        final Map<Float,Float> termScoreMap = new HashMap<>();
-        scoreMap.put("real"+contentID, termScoreMap);
-        //System.out.println("term=real" + contentID + " dfold=" + s.docFreq(new Term("content", "real"+contentID)) +
-        //" dfnew=" + sBlocks.docFreq(new Term("content", "real"+contentID)));
-        final ScoreDoc[] hits = sBlocks.search(new TermQuery(new Term("content", "real"+contentID)), numDocs).scoreDocs;
-        for(ScoreDoc hit : hits) {
+      // System.out.println("fixup score2");
+      for (int contentID = 0; contentID < 3; contentID++) {
+        // System.out.println("  term=real" + contentID);
+        final Map<Float, Float> termScoreMap = new HashMap<>();
+        scoreMap.put("real" + contentID, termScoreMap);
+        // System.out.println("term=real" + contentID + " dfold=" + s.docFreq(new Term("content",
+        // "real"+contentID)) +
+        // " dfnew=" + sBlocks.docFreq(new Term("content", "real"+contentID)));
+        final ScoreDoc[] hits =
+            sBlocks.search(new TermQuery(new Term("content", "real" + contentID)), numDocs)
+                .scoreDocs;
+        for (ScoreDoc hit : hits) {
           final GroupDoc gd = groupDocsByID[docIDToIDBlocks[hit.doc]];
           assertTrue(gd.score2 == 0.0);
           gd.score2 = hit.score;
           assertEquals(gd.id, docIDToIDBlocks[hit.doc]);
-          //System.out.println("    score=" + gd.score + " score2=" + hit.score + " id=" + docIDToIDBlocks[hit.doc]);
+          // System.out.println("    score=" + gd.score + " score2=" + hit.score + " id=" +
+          // docIDToIDBlocks[hit.doc]);
           termScoreMap.put(gd.score, gd.score2);
         }
       }
-      
-      for(int searchIter=0;searchIter<100;searchIter++) {
-        
+
+      for (int searchIter = 0; searchIter < 100; searchIter++) {
+
         if (VERBOSE) {
           System.out.println("\nTEST: searchIter=" + searchIter);
         }
-        
+
         final String searchTerm = "real" + random().nextInt(3);
         final boolean getMaxScores = random().nextBoolean();
         final Sort groupSort = getRandomSort();
-        //final Sort groupSort = new Sort(new SortField[] {new SortField("sort1", SortField.STRING), new SortField("id", SortField.INT)});
+        // final Sort groupSort = new Sort(new SortField[] {new SortField("sort1",
+        // SortField.STRING), new SortField("id", SortField.INT)});
         final Sort docSort = getRandomSort();
-        
+
         final int topNGroups = TestUtil.nextInt(random(), 1, 30);
-        //final int topNGroups = 10;
+        // final int topNGroups = 10;
         final int docsPerGroup = TestUtil.nextInt(random(), 1, 50);
-        
+
         final int groupOffset = TestUtil.nextInt(random(), 0, (topNGroups - 1) / 2);
-        //final int groupOffset = 0;
-        
+        // final int groupOffset = 0;
+
         final int docOffset = TestUtil.nextInt(random(), 0, docsPerGroup - 1);
-        //final int docOffset = 0;
+        // final int docOffset = 0;
 
         final boolean doCache = random().nextBoolean();
         final boolean doAllGroups = random().nextBoolean();
         if (VERBOSE) {
-          System.out.println("TEST: groupSort=" + groupSort + " docSort=" + docSort + " searchTerm=" + searchTerm + " dF=" + r.docFreq(new Term("content", searchTerm))  +" dFBlock=" + rBlocks.docFreq(new Term("content", searchTerm)) + " topNGroups=" + topNGroups + " groupOffset=" + groupOffset + " docOffset=" + docOffset + " doCache=" + doCache + " docsPerGroup=" + docsPerGroup + " doAllGroups=" + doAllGroups + " getMaxScores=" + getMaxScores);
+          System.out.println(
+              "TEST: groupSort="
+                  + groupSort
+                  + " docSort="
+                  + docSort
+                  + " searchTerm="
+                  + searchTerm
+                  + " dF="
+                  + r.docFreq(new Term("content", searchTerm))
+                  + " dFBlock="
+                  + rBlocks.docFreq(new Term("content", searchTerm))
+                  + " topNGroups="
+                  + topNGroups
+                  + " groupOffset="
+                  + groupOffset
+                  + " docOffset="
+                  + docOffset
+                  + " doCache="
+                  + doCache
+                  + " docsPerGroup="
+                  + docsPerGroup
+                  + " doAllGroups="
+                  + doAllGroups
+                  + " getMaxScores="
+                  + getMaxScores);
         }
-        
+
         String groupField = "group";
         if (VERBOSE) {
           System.out.println("  groupField=" + groupField);
         }
-        final FirstPassGroupingCollector<?> c1 = createRandomFirstPassCollector(groupField, groupSort, groupOffset+topNGroups);
+        final FirstPassGroupingCollector<?> c1 =
+            createRandomFirstPassCollector(groupField, groupSort, groupOffset + topNGroups);
         final CachingCollector cCache;
         final Collector c;
-        
+
         final AllGroupsCollector<?> allGroupsCollector;
         if (doAllGroups) {
           allGroupsCollector = createAllGroupsCollector(c1, groupField);
         } else {
           allGroupsCollector = null;
         }
-        
+
         final boolean useWrappingCollector = random().nextBoolean();
-        
+
         if (doCache) {
           final double maxCacheMB = random().nextDouble();
           if (VERBOSE) {
             System.out.println("TEST: maxCacheMB=" + maxCacheMB);
           }
-          
+
           if (useWrappingCollector) {
             if (doAllGroups) {
               cCache = CachingCollector.create(c1, true, maxCacheMB);
@@ -892,12 +998,12 @@ public class TestGrouping extends LuceneTestCase {
             c = c1;
           }
         }
-        
+
         // Search top reader:
         final Query query = new TermQuery(new Term("content", searchTerm));
-        
+
         s.search(query, c);
-        
+
         if (doCache && !useWrappingCollector) {
           if (cCache.isCached()) {
             // Replay for first-pass grouping
@@ -914,7 +1020,7 @@ public class TestGrouping extends LuceneTestCase {
             }
           }
         }
-        
+
         // Get 1st pass top groups
         final Collection<SearchGroup<BytesRef>> topGroups = getSearchGroups(c1, groupOffset);
         final TopGroups<BytesRef> groupsResult;
@@ -924,26 +1030,50 @@ public class TestGrouping extends LuceneTestCase {
             System.out.println("  null");
           } else {
             for (SearchGroup<BytesRef> searchGroup : topGroups) {
-              System.out.println("  " + (searchGroup.groupValue == null ? "null" : searchGroup.groupValue) + ": " + Arrays.deepToString(searchGroup.sortValues));
+              System.out.println(
+                  "  "
+                      + (searchGroup.groupValue == null ? "null" : searchGroup.groupValue)
+                      + ": "
+                      + Arrays.deepToString(searchGroup.sortValues));
             }
           }
         }
-        
+
         // Get 1st pass top groups using shards
-        
-        final TopGroups<BytesRef> topGroupsShards = searchShards(s, shards.subSearchers, query, groupSort, docSort,
-            groupOffset, topNGroups, docOffset, docsPerGroup, getMaxScores, true, true);
+
+        final TopGroups<BytesRef> topGroupsShards =
+            searchShards(
+                s,
+                shards.subSearchers,
+                query,
+                groupSort,
+                docSort,
+                groupOffset,
+                topNGroups,
+                docOffset,
+                docsPerGroup,
+                getMaxScores,
+                true,
+                true);
         final TopGroupsCollector<?> c2;
         if (topGroups != null) {
-          
+
           if (VERBOSE) {
             System.out.println("TEST: topGroups");
             for (SearchGroup<BytesRef> searchGroup : topGroups) {
-              System.out.println("  " + (searchGroup.groupValue == null ? "null" : searchGroup.groupValue.utf8ToString()) + ": " + Arrays.deepToString(searchGroup.sortValues));
+              System.out.println(
+                  "  "
+                      + (searchGroup.groupValue == null
+                          ? "null"
+                          : searchGroup.groupValue.utf8ToString())
+                      + ": "
+                      + Arrays.deepToString(searchGroup.sortValues));
             }
           }
-          
-          c2 = createSecondPassCollector(c1, groupSort, docSort, groupOffset, docOffset + docsPerGroup, getMaxScores);
+
+          c2 =
+              createSecondPassCollector(
+                  c1, groupSort, docSort, groupOffset, docOffset + docsPerGroup, getMaxScores);
           if (doCache) {
             if (cCache.isCached()) {
               if (VERBOSE) {
@@ -959,7 +1089,7 @@ public class TestGrouping extends LuceneTestCase {
           } else {
             s.search(query, c2);
           }
-          
+
           if (doAllGroups) {
             TopGroups<BytesRef> tempTopGroups = getTopGroups(c2, docOffset);
             groupsResult = new TopGroups<>(tempTopGroups, allGroupsCollector.getGroupCount());
@@ -973,63 +1103,99 @@ public class TestGrouping extends LuceneTestCase {
             System.out.println("TEST:   no results");
           }
         }
-        
-        final TopGroups<BytesRef> expectedGroups = slowGrouping(groupDocs, searchTerm, getMaxScores, doAllGroups, groupSort, docSort, topNGroups, docsPerGroup, groupOffset, docOffset);
-        
+
+        final TopGroups<BytesRef> expectedGroups =
+            slowGrouping(
+                groupDocs,
+                searchTerm,
+                getMaxScores,
+                doAllGroups,
+                groupSort,
+                docSort,
+                topNGroups,
+                docsPerGroup,
+                groupOffset,
+                docOffset);
+
         if (VERBOSE) {
           if (expectedGroups == null) {
             System.out.println("TEST: no expected groups");
           } else {
-            System.out.println("TEST: expected groups totalGroupedHitCount=" + expectedGroups.totalGroupedHitCount);
-            for(GroupDocs<BytesRef> gd : expectedGroups.groups) {
-              System.out.println("  group=" + (gd.groupValue == null ? "null" : gd.groupValue) + " totalHits=" + gd.totalHits.value + " scoreDocs.len=" + gd.scoreDocs.length);
-              for(ScoreDoc sd : gd.scoreDocs) {
+            System.out.println(
+                "TEST: expected groups totalGroupedHitCount="
+                    + expectedGroups.totalGroupedHitCount);
+            for (GroupDocs<BytesRef> gd : expectedGroups.groups) {
+              System.out.println(
+                  "  group="
+                      + (gd.groupValue == null ? "null" : gd.groupValue)
+                      + " totalHits="
+                      + gd.totalHits.value
+                      + " scoreDocs.len="
+                      + gd.scoreDocs.length);
+              for (ScoreDoc sd : gd.scoreDocs) {
                 System.out.println("    id=" + sd.doc + " score=" + sd.score);
               }
             }
           }
-          
+
           if (groupsResult == null) {
             System.out.println("TEST: no matched groups");
           } else {
-            System.out.println("TEST: matched groups totalGroupedHitCount=" + groupsResult.totalGroupedHitCount);
-            for(GroupDocs<BytesRef> gd : groupsResult.groups) {
-              System.out.println("  group=" + (gd.groupValue == null ? "null" : gd.groupValue) + " totalHits=" + gd.totalHits.value);
-              for(ScoreDoc sd : gd.scoreDocs) {
+            System.out.println(
+                "TEST: matched groups totalGroupedHitCount=" + groupsResult.totalGroupedHitCount);
+            for (GroupDocs<BytesRef> gd : groupsResult.groups) {
+              System.out.println(
+                  "  group="
+                      + (gd.groupValue == null ? "null" : gd.groupValue)
+                      + " totalHits="
+                      + gd.totalHits.value);
+              for (ScoreDoc sd : gd.scoreDocs) {
                 System.out.println("    id=" + docIDToID[sd.doc] + " score=" + sd.score);
               }
             }
-            
+
             if (searchIter == 14) {
-              for(int docIDX=0;docIDX<s.getIndexReader().maxDoc();docIDX++) {
-                System.out.println("ID=" + docIDToID[docIDX] + " explain=" + s.explain(query, docIDX));
+              for (int docIDX = 0; docIDX < s.getIndexReader().maxDoc(); docIDX++) {
+                System.out.println(
+                    "ID=" + docIDToID[docIDX] + " explain=" + s.explain(query, docIDX));
               }
             }
           }
-          
+
           if (topGroupsShards == null) {
             System.out.println("TEST: no matched-merged groups");
           } else {
-            System.out.println("TEST: matched-merged groups totalGroupedHitCount=" + topGroupsShards.totalGroupedHitCount);
-            for(GroupDocs<BytesRef> gd : topGroupsShards.groups) {
-              System.out.println("  group=" + (gd.groupValue == null ? "null" : gd.groupValue) + " totalHits=" + gd.totalHits.value);
-              for(ScoreDoc sd : gd.scoreDocs) {
+            System.out.println(
+                "TEST: matched-merged groups totalGroupedHitCount="
+                    + topGroupsShards.totalGroupedHitCount);
+            for (GroupDocs<BytesRef> gd : topGroupsShards.groups) {
+              System.out.println(
+                  "  group="
+                      + (gd.groupValue == null ? "null" : gd.groupValue)
+                      + " totalHits="
+                      + gd.totalHits.value);
+              for (ScoreDoc sd : gd.scoreDocs) {
                 System.out.println("    id=" + docIDToID[sd.doc] + " score=" + sd.score);
               }
             }
           }
         }
-        
+
         assertEquals(docIDToID, expectedGroups, groupsResult, true, true, true);
-        
+
         // Confirm merged shards match:
         assertEquals(docIDToID, expectedGroups, topGroupsShards, true, false, true);
         if (topGroupsShards != null) {
           verifyShards(shards.docStarts, topGroupsShards);
         }
 
-        final BlockGroupingCollector c3 = new BlockGroupingCollector(groupSort, groupOffset+topNGroups,
-            groupSort.needsScores() || docSort.needsScores(), sBlocks.createWeight(sBlocks.rewrite(lastDocInBlock), ScoreMode.COMPLETE_NO_SCORES, 1));
+        final BlockGroupingCollector c3 =
+            new BlockGroupingCollector(
+                groupSort,
+                groupOffset + topNGroups,
+                groupSort.needsScores() || docSort.needsScores(),
+                sBlocks.createWeight(
+                    sBlocks.rewrite(lastDocInBlock), ScoreMode.COMPLETE_NO_SCORES, 1));
         final AllGroupsCollector<BytesRef> allGroupsCollector2;
         final Collector c4;
         if (doAllGroups) {
@@ -1044,25 +1210,35 @@ public class TestGrouping extends LuceneTestCase {
         }
         // Get block grouping result:
         sBlocks.search(query, c4);
-        @SuppressWarnings({"unchecked","rawtypes"})
-        final TopGroups<BytesRef> tempTopGroupsBlocks = (TopGroups<BytesRef>) c3.getTopGroups(docSort, groupOffset, docOffset, docOffset+docsPerGroup);
+        @SuppressWarnings({"unchecked", "rawtypes"})
+        final TopGroups<BytesRef> tempTopGroupsBlocks =
+            (TopGroups<BytesRef>)
+                c3.getTopGroups(docSort, groupOffset, docOffset, docOffset + docsPerGroup);
         final TopGroups<BytesRef> groupsResultBlocks;
         if (doAllGroups && tempTopGroupsBlocks != null) {
-          assertEquals((int) tempTopGroupsBlocks.totalGroupCount, allGroupsCollector2.getGroupCount());
-          groupsResultBlocks = new TopGroups<>(tempTopGroupsBlocks, allGroupsCollector2.getGroupCount());
+          assertEquals(
+              (int) tempTopGroupsBlocks.totalGroupCount, allGroupsCollector2.getGroupCount());
+          groupsResultBlocks =
+              new TopGroups<>(tempTopGroupsBlocks, allGroupsCollector2.getGroupCount());
         } else {
           groupsResultBlocks = tempTopGroupsBlocks;
         }
-        
+
         if (VERBOSE) {
           if (groupsResultBlocks == null) {
             System.out.println("TEST: no block groups");
           } else {
-            System.out.println("TEST: block groups totalGroupedHitCount=" + groupsResultBlocks.totalGroupedHitCount);
+            System.out.println(
+                "TEST: block groups totalGroupedHitCount="
+                    + groupsResultBlocks.totalGroupedHitCount);
             boolean first = true;
-            for(GroupDocs<BytesRef> gd : groupsResultBlocks.groups) {
-              System.out.println("  group=" + (gd.groupValue == null ? "null" : gd.groupValue.utf8ToString()) + " totalHits=" + gd.totalHits.value);
-              for(ScoreDoc sd : gd.scoreDocs) {
+            for (GroupDocs<BytesRef> gd : groupsResultBlocks.groups) {
+              System.out.println(
+                  "  group="
+                      + (gd.groupValue == null ? "null" : gd.groupValue.utf8ToString())
+                      + " totalHits="
+                      + gd.totalHits.value);
+              for (ScoreDoc sd : gd.scoreDocs) {
                 System.out.println("    id=" + docIDToIDBlocks[sd.doc] + " score=" + sd.score);
                 if (first) {
                   System.out.println("explain: " + sBlocks.explain(query, sd.doc));
@@ -1072,41 +1248,56 @@ public class TestGrouping extends LuceneTestCase {
             }
           }
         }
-        
+
         // Get shard'd block grouping result:
-        final TopGroups<BytesRef> topGroupsBlockShards = searchShards(sBlocks, shardsBlocks.subSearchers, query,
-            groupSort, docSort, groupOffset, topNGroups, docOffset, docsPerGroup, getMaxScores, false, false);
-        
+        final TopGroups<BytesRef> topGroupsBlockShards =
+            searchShards(
+                sBlocks,
+                shardsBlocks.subSearchers,
+                query,
+                groupSort,
+                docSort,
+                groupOffset,
+                topNGroups,
+                docOffset,
+                docsPerGroup,
+                getMaxScores,
+                false,
+                false);
+
         if (expectedGroups != null) {
           // Fixup scores for reader2
           for (GroupDocs<?> groupDocsHits : expectedGroups.groups) {
-            for(ScoreDoc hit : groupDocsHits.scoreDocs) {
+            for (ScoreDoc hit : groupDocsHits.scoreDocs) {
               final GroupDoc gd = groupDocsByID[hit.doc];
               assertEquals(gd.id, hit.doc);
-              //System.out.println("fixup score " + hit.score + " to " + gd.score2 + " vs " + gd.score);
+              // System.out.println("fixup score " + hit.score + " to " + gd.score2 + " vs " +
+              // gd.score);
               hit.score = gd.score2;
             }
           }
-          
+
           final SortField[] sortFields = groupSort.getSort();
-          final Map<Float,Float> termScoreMap = scoreMap.get(searchTerm);
-          for(int groupSortIDX=0;groupSortIDX<sortFields.length;groupSortIDX++) {
+          final Map<Float, Float> termScoreMap = scoreMap.get(searchTerm);
+          for (int groupSortIDX = 0; groupSortIDX < sortFields.length; groupSortIDX++) {
             if (sortFields[groupSortIDX].getType() == SortField.Type.SCORE) {
               for (GroupDocs<?> groupDocsHits : expectedGroups.groups) {
                 if (groupDocsHits.groupSortValues != null) {
-                  //System.out.println("remap " + groupDocsHits.groupSortValues[groupSortIDX] + " to " + termScoreMap.get(groupDocsHits.groupSortValues[groupSortIDX]));
-                  groupDocsHits.groupSortValues[groupSortIDX] = termScoreMap.get(groupDocsHits.groupSortValues[groupSortIDX]);
+                  // System.out.println("remap " + groupDocsHits.groupSortValues[groupSortIDX] + "
+                  // to " + termScoreMap.get(groupDocsHits.groupSortValues[groupSortIDX]));
+                  groupDocsHits.groupSortValues[groupSortIDX] =
+                      termScoreMap.get(groupDocsHits.groupSortValues[groupSortIDX]);
                   assertNotNull(groupDocsHits.groupSortValues[groupSortIDX]);
                 }
               }
             }
           }
-          
+
           final SortField[] docSortFields = docSort.getSort();
-          for(int docSortIDX=0;docSortIDX<docSortFields.length;docSortIDX++) {
+          for (int docSortIDX = 0; docSortIDX < docSortFields.length; docSortIDX++) {
             if (docSortFields[docSortIDX].getType() == SortField.Type.SCORE) {
               for (GroupDocs<?> groupDocsHits : expectedGroups.groups) {
-                for(ScoreDoc _hit : groupDocsHits.scoreDocs) {
+                for (ScoreDoc _hit : groupDocsHits.scoreDocs) {
                   FieldDoc hit = (FieldDoc) _hit;
                   if (hit.fields != null) {
                     hit.fields[docSortIDX] = termScoreMap.get(hit.fields[docSortIDX]);
@@ -1117,40 +1308,66 @@ public class TestGrouping extends LuceneTestCase {
             }
           }
         }
-        
+
         assertEquals(docIDToIDBlocks, expectedGroups, groupsResultBlocks, false, true, false);
         assertEquals(docIDToIDBlocks, expectedGroups, topGroupsBlockShards, false, false, false);
       }
-      
+
       r.close();
       dir.close();
-      
+
       rBlocks.close();
       dirBlocks.close();
     }
   }
 
   private void verifyShards(int[] docStarts, TopGroups<BytesRef> topGroups) {
-    for(GroupDocs<?> group : topGroups.groups) {
-      for(int hitIDX=0;hitIDX<group.scoreDocs.length;hitIDX++) {
+    for (GroupDocs<?> group : topGroups.groups) {
+      for (int hitIDX = 0; hitIDX < group.scoreDocs.length; hitIDX++) {
         final ScoreDoc sd = group.scoreDocs[hitIDX];
-        assertEquals("doc=" + sd.doc + " wrong shard",
-                     ReaderUtil.subIndex(sd.doc, docStarts),
-                     sd.shardIndex);
+        assertEquals(
+            "doc=" + sd.doc + " wrong shard",
+            ReaderUtil.subIndex(sd.doc, docStarts),
+            sd.shardIndex);
       }
     }
   }
 
-  private TopGroups<BytesRef> searchShards(IndexSearcher topSearcher, ShardSearcher[] subSearchers, Query query, Sort groupSort, Sort docSort, int groupOffset, int topNGroups, int docOffset,
-                                           int topNDocs, boolean getMaxScores, boolean canUseIDV, boolean preFlex) throws Exception {
-
-    // TODO: swap in caching, all groups collector hereassertEquals(expected.totalHitCount, actual.totalHitCount);
+  private TopGroups<BytesRef> searchShards(
+      IndexSearcher topSearcher,
+      ShardSearcher[] subSearchers,
+      Query query,
+      Sort groupSort,
+      Sort docSort,
+      int groupOffset,
+      int topNGroups,
+      int docOffset,
+      int topNDocs,
+      boolean getMaxScores,
+      boolean canUseIDV,
+      boolean preFlex)
+      throws Exception {
+
+    // TODO: swap in caching, all groups collector hereassertEquals(expected.totalHitCount,
+    // actual.totalHitCount);
     // too...
     if (VERBOSE) {
-      System.out.println("TEST: " + subSearchers.length + " shards: " + Arrays.toString(subSearchers) + " canUseIDV=" + canUseIDV);
+      System.out.println(
+          "TEST: "
+              + subSearchers.length
+              + " shards: "
+              + Arrays.toString(subSearchers)
+              + " canUseIDV="
+              + canUseIDV);
     }
     // Run 1st pass collector to get top groups per shard
-    final Weight w = topSearcher.createWeight(topSearcher.rewrite(query), groupSort.needsScores() || docSort.needsScores() || getMaxScores ? ScoreMode.COMPLETE : ScoreMode.COMPLETE_NO_SCORES, 1);
+    final Weight w =
+        topSearcher.createWeight(
+            topSearcher.rewrite(query),
+            groupSort.needsScores() || docSort.needsScores() || getMaxScores
+                ? ScoreMode.COMPLETE
+                : ScoreMode.COMPLETE_NO_SCORES,
+            1);
     final List<Collection<SearchGroup<BytesRef>>> shardGroups = new ArrayList<>();
     List<FirstPassGroupingCollector<?>> firstPassGroupingCollectors = new ArrayList<>();
     FirstPassGroupingCollector<?> firstPassCollector = null;
@@ -1158,14 +1375,17 @@ public class TestGrouping extends LuceneTestCase {
 
     String groupField = "group";
 
-    for(int shardIDX=0;shardIDX<subSearchers.length;shardIDX++) {
+    for (int shardIDX = 0; shardIDX < subSearchers.length; shardIDX++) {
 
       // First shard determines whether we use IDV or not;
       // all other shards match that:
       if (firstPassCollector == null) {
-        firstPassCollector = createRandomFirstPassCollector(groupField, groupSort, groupOffset + topNGroups);
+        firstPassCollector =
+            createRandomFirstPassCollector(groupField, groupSort, groupOffset + topNGroups);
       } else {
-        firstPassCollector = createFirstPassCollector(groupField, groupSort, groupOffset + topNGroups, firstPassCollector);
+        firstPassCollector =
+            createFirstPassCollector(
+                groupField, groupSort, groupOffset + topNGroups, firstPassCollector);
       }
       if (VERBOSE) {
         System.out.println("  shard=" + shardIDX + " groupField=" + groupField);
@@ -1176,50 +1396,94 @@ public class TestGrouping extends LuceneTestCase {
       final Collection<SearchGroup<BytesRef>> topGroups = getSearchGroups(firstPassCollector, 0);
       if (topGroups != null) {
         if (VERBOSE) {
-          System.out.println("  shard " + shardIDX + " s=" + subSearchers[shardIDX] + " totalGroupedHitCount=?" + " " + topGroups.size() + " groups:");
-          for(SearchGroup<BytesRef> group : topGroups) {
-            System.out.println("    " + groupToString(group.groupValue) + " groupSort=" + Arrays.toString(group.sortValues));
+          System.out.println(
+              "  shard "
+                  + shardIDX
+                  + " s="
+                  + subSearchers[shardIDX]
+                  + " totalGroupedHitCount=?"
+                  + " "
+                  + topGroups.size()
+                  + " groups:");
+          for (SearchGroup<BytesRef> group : topGroups) {
+            System.out.println(
+                "    "
+                    + groupToString(group.groupValue)
+                    + " groupSort="
+                    + Arrays.toString(group.sortValues));
           }
         }
         shardGroups.add(topGroups);
       }
     }
 
-    final Collection<SearchGroup<BytesRef>> mergedTopGroups = SearchGroup.merge(shardGroups, groupOffset, topNGroups, groupSort);
+    final Collection<SearchGroup<BytesRef>> mergedTopGroups =
+        SearchGroup.merge(shardGroups, groupOffset, topNGroups, groupSort);
     if (VERBOSE) {
       System.out.println(" top groups merged:");
       if (mergedTopGroups == null) {
         System.out.println("    null");
       } else {
         System.out.println("    " + mergedTopGroups.size() + " top groups:");
-        for(SearchGroup<BytesRef> group : mergedTopGroups) {
-          System.out.println("    [" + groupToString(group.groupValue) + "] groupSort=" + Arrays.toString(group.sortValues));
+        for (SearchGroup<BytesRef> group : mergedTopGroups) {
+          System.out.println(
+              "    ["
+                  + groupToString(group.groupValue)
+                  + "] groupSort="
+                  + Arrays.toString(group.sortValues));
         }
       }
     }
 
     if (mergedTopGroups != null) {
       // Now 2nd pass:
-      @SuppressWarnings({"unchecked","rawtypes"})
+      @SuppressWarnings({"unchecked", "rawtypes"})
       final TopGroups<BytesRef>[] shardTopGroups = new TopGroups[subSearchers.length];
-      for(int shardIDX=0;shardIDX<subSearchers.length;shardIDX++) {
-        final TopGroupsCollector<?> secondPassCollector = createSecondPassCollector(firstPassGroupingCollectors.get(shardIDX),
-            groupField, mergedTopGroups, groupSort, docSort, docOffset + topNDocs, getMaxScores);
+      for (int shardIDX = 0; shardIDX < subSearchers.length; shardIDX++) {
+        final TopGroupsCollector<?> secondPassCollector =
+            createSecondPassCollector(
+                firstPassGroupingCollectors.get(shardIDX),
+                groupField,
+                mergedTopGroups,
+                groupSort,
+                docSort,
+                docOffset + topNDocs,
+                getMaxScores);
         subSearchers[shardIDX].search(w, secondPassCollector);
         shardTopGroups[shardIDX] = getTopGroups(secondPassCollector, 0);
         if (VERBOSE) {
-          System.out.println(" " + shardTopGroups[shardIDX].groups.length + " shard[" + shardIDX + "] groups:");
-          for(GroupDocs<BytesRef> group : shardTopGroups[shardIDX].groups) {
-            System.out.println("    [" + groupToString(group.groupValue) + "] groupSort=" + Arrays.toString(group.groupSortValues) + " numDocs=" + group.scoreDocs.length);
+          System.out.println(
+              " " + shardTopGroups[shardIDX].groups.length + " shard[" + shardIDX + "] groups:");
+          for (GroupDocs<BytesRef> group : shardTopGroups[shardIDX].groups) {
+            System.out.println(
+                "    ["
+                    + groupToString(group.groupValue)
+                    + "] groupSort="
+                    + Arrays.toString(group.groupSortValues)
+                    + " numDocs="
+                    + group.scoreDocs.length);
           }
         }
       }
 
-      TopGroups<BytesRef> mergedGroups = TopGroups.merge(shardTopGroups, groupSort, docSort, docOffset, topNDocs, TopGroups.ScoreMergeMode.None);
+      TopGroups<BytesRef> mergedGroups =
+          TopGroups.merge(
+              shardTopGroups,
+              groupSort,
+              docSort,
+              docOffset,
+              topNDocs,
+              TopGroups.ScoreMergeMode.None);
       if (VERBOSE) {
         System.out.println(" " + mergedGroups.groups.length + " merged groups:");
-        for(GroupDocs<BytesRef> group : mergedGroups.groups) {
-          System.out.println("    [" + groupToString(group.groupValue) + "] groupSort=" + Arrays.toString(group.groupSortValues)  + " numDocs=" + group.scoreDocs.length);
+        for (GroupDocs<BytesRef> group : mergedGroups.groups) {
+          System.out.println(
+              "    ["
+                  + groupToString(group.groupValue)
+                  + "] groupSort="
+                  + Arrays.toString(group.groupSortValues)
+                  + " numDocs="
+                  + group.scoreDocs.length);
         }
       }
       return mergedGroups;
@@ -1228,21 +1492,39 @@ public class TestGrouping extends LuceneTestCase {
     }
   }
 
-  private void assertEquals(int[] docIDtoID, TopGroups<BytesRef> expected, TopGroups<BytesRef> actual, boolean verifyGroupValues, boolean verifyTotalGroupCount, boolean idvBasedImplsUsed) {
+  private void assertEquals(
+      int[] docIDtoID,
+      TopGroups<BytesRef> expected,
+      TopGroups<BytesRef> actual,
+      boolean verifyGroupValues,
+      boolean verifyTotalGroupCount,
+      boolean idvBasedImplsUsed) {
     if (expected == null) {
       assertNull(actual);
       return;
     }
     assertNotNull(actual);
 
-    assertEquals("expected.groups.length != actual.groups.length", expected.groups.length, actual.groups.length);
-    assertEquals("expected.totalHitCount != actual.totalHitCount", expected.totalHitCount, actual.totalHitCount);
-    assertEquals("expected.totalGroupedHitCount != actual.totalGroupedHitCount", expected.totalGroupedHitCount, actual.totalGroupedHitCount);
+    assertEquals(
+        "expected.groups.length != actual.groups.length",
+        expected.groups.length,
+        actual.groups.length);
+    assertEquals(
+        "expected.totalHitCount != actual.totalHitCount",
+        expected.totalHitCount,
+        actual.totalHitCount);
+    assertEquals(
+        "expected.totalGroupedHitCount != actual.totalGroupedHitCount",
+        expected.totalGroupedHitCount,
+        actual.totalGroupedHitCount);
     if (expected.totalGroupCount != null && verifyTotalGroupCount) {
-      assertEquals("expected.totalGroupCount != actual.totalGroupCount", expected.totalGroupCount, actual.totalGroupCount);
+      assertEquals(
+          "expected.totalGroupCount != actual.totalGroupCount",
+          expected.totalGroupCount,
+          actual.totalGroupCount);
     }
 
-    for(int groupIDX=0;groupIDX<expected.groups.length;groupIDX++) {
+    for (int groupIDX = 0; groupIDX < expected.groups.length; groupIDX++) {
       if (VERBOSE) {
         System.out.println("  check groupIDX=" + groupIDX);
       }
@@ -1258,7 +1540,6 @@ public class TestGrouping extends LuceneTestCase {
         } else {
           assertEquals(expectedGroup.groupValue, actualGroup.groupValue);
         }
-
       }
       assertArrayEquals(expectedGroup.groupSortValues, actualGroup.groupSortValues);
 
@@ -1270,10 +1551,11 @@ public class TestGrouping extends LuceneTestCase {
       final ScoreDoc[] actualFDs = actualGroup.scoreDocs;
 
       assertEquals(expectedFDs.length, actualFDs.length);
-      for(int docIDX=0;docIDX<expectedFDs.length;docIDX++) {
+      for (int docIDX = 0; docIDX < expectedFDs.length; docIDX++) {
         final FieldDoc expectedFD = (FieldDoc) expectedFDs[docIDX];
         final FieldDoc actualFD = (FieldDoc) actualFDs[docIDX];
-        //System.out.println("  actual doc=" + docIDtoID[actualFD.doc] + " score=" + actualFD.score);
+        // System.out.println("  actual doc=" + docIDtoID[actualFD.doc] + " score=" +
+        // actualFD.score);
         assertEquals(expectedFD.doc, docIDtoID[actualFD.doc]);
         assertArrayEquals(expectedFD.fields, actualFD.fields);
       }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupingSearch.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupingSearch.java
index d0c0551..bdaa12a 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupingSearch.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGroupingSearch.java
@@ -16,6 +16,9 @@
  */
 package org.apache.lucene.search.grouping;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
@@ -37,10 +40,6 @@ import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.mutable.MutableValueStr;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
 public class TestGroupingSearch extends LuceneTestCase {
 
   // Tests some very basic usages...
@@ -52,10 +51,11 @@ public class TestGroupingSearch extends LuceneTestCase {
     customType.setStored(true);
 
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random(),
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
     boolean canUseIDV = true;
     List<Document> documents = new ArrayList<>();
     // 0
@@ -122,7 +122,8 @@ public class TestGroupingSearch extends LuceneTestCase {
     Sort groupSort = Sort.RELEVANCE;
     GroupingSearch groupingSearch = createRandomGroupingSearch(groupField, groupSort, 5, canUseIDV);
 
-    TopGroups<?> groups = groupingSearch.search(indexSearcher, new TermQuery(new Term("content", "random")), 0, 10);
+    TopGroups<?> groups =
+        groupingSearch.search(indexSearcher, new TermQuery(new Term("content", "random")), 0, 10);
 
     assertEquals(7, groups.totalHitCount);
     assertEquals(7, groups.totalGroupedHitCount);
@@ -160,13 +161,14 @@ public class TestGroupingSearch extends LuceneTestCase {
 
     Query lastDocInBlock = new TermQuery(new Term("groupend", "x"));
     groupingSearch = new GroupingSearch(lastDocInBlock);
-    groups = groupingSearch.search(indexSearcher, new TermQuery(new Term("content", "random")), 0, 10);
+    groups =
+        groupingSearch.search(indexSearcher, new TermQuery(new Term("content", "random")), 0, 10);
 
     assertEquals(7, groups.totalHitCount);
     assertEquals(7, groups.totalGroupedHitCount);
     assertEquals(4, groups.totalGroupCount.longValue());
     assertEquals(4, groups.groups.length);
-    
+
     indexSearcher.getIndexReader().close();
     dir.close();
   }
@@ -201,7 +203,8 @@ public class TestGroupingSearch extends LuceneTestCase {
     }
   }
 
-  private GroupingSearch createRandomGroupingSearch(String groupField, Sort groupSort, int docsInGroup, boolean canUseIDV) {
+  private GroupingSearch createRandomGroupingSearch(
+      String groupField, Sort groupSort, int docsInGroup, boolean canUseIDV) {
     GroupingSearch groupingSearch;
     if (random().nextBoolean()) {
       ValueSource vs = new BytesRefFieldSource(groupField);
@@ -222,10 +225,11 @@ public class TestGroupingSearch extends LuceneTestCase {
 
   public void testSetAllGroups() throws Exception {
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(
-        random(),
-        dir,
-        newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
+    RandomIndexWriter w =
+        new RandomIndexWriter(
+            random(),
+            dir,
+            newIndexWriterConfig(new MockAnalyzer(random())).setMergePolicy(newLogMergePolicy()));
     Document doc = new Document();
     doc.add(newField("group", "foo", StringField.TYPE_NOT_STORED));
     doc.add(new SortedDocValuesField("group", new BytesRef("foo")));
@@ -238,7 +242,7 @@ public class TestGroupingSearch extends LuceneTestCase {
     gs.setAllGroups(true);
     TopGroups<?> groups = gs.search(indexSearcher, new TermQuery(new Term("group", "foo")), 0, 10);
     assertEquals(1, groups.totalHitCount);
-    //assertEquals(1, groups.totalGroupCount.intValue());
+    // assertEquals(1, groups.totalGroupCount.intValue());
     assertEquals(1, groups.totalGroupedHitCount);
     assertEquals(1, gs.getAllMatchingGroups().size());
     indexSearcher.getIndexReader().close();
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeFactory.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeFactory.java
index 0677631..70c1d94 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeFactory.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeFactory.java
@@ -33,7 +33,5 @@ public class TestLongRangeFactory extends LuceneTestCase {
     assertEquals(new LongRange(30, 40), factory.getRange(35, scratch));
     assertEquals(new LongRange(50, Long.MAX_VALUE), factory.getRange(50, scratch));
     assertEquals(new LongRange(50, Long.MAX_VALUE), factory.getRange(500, scratch));
-
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeGroupSelector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeGroupSelector.java
index 7384a56..083bb5c 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeGroupSelector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeGroupSelector.java
@@ -42,8 +42,8 @@ public class TestLongRangeGroupSelector extends BaseGroupSelectorTestCase<LongRa
 
   @Override
   protected GroupSelector<LongRange> getGroupSelector() {
-    return new LongRangeGroupSelector(LongValuesSource.fromLongField("long"),
-        new LongRangeFactory(100, 100, 900));
+    return new LongRangeGroupSelector(
+        LongValuesSource.fromLongField("long"), new LongRangeFactory(100, 100, 900));
   }
 
   @Override
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTermGroupSelector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTermGroupSelector.java
index e55fd64..9249d45 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTermGroupSelector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTermGroupSelector.java
@@ -35,7 +35,7 @@ public class TestTermGroupSelector extends BaseGroupSelectorTestCase<BytesRef> {
   @Override
   protected void addGroupField(Document document, int id) {
     if (rarely()) {
-      return;   // missing value
+      return; // missing value
     }
     String groupValue = "group" + random().nextInt(10);
     document.add(new SortedDocValuesField("groupField", new BytesRef(groupValue)));
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTopGroups.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTopGroups.java
index 6ba5ba1..c547525 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTopGroups.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestTopGroups.java
@@ -104,56 +104,87 @@ public class TestTopGroups extends LuceneTestCase {
 
     final TopGroups<String> shard1TopGroups;
     {
-      final GroupDocs<String> group1 = haveBlueWhale
-          ? createSingletonGroupDocs(blueGroupValue, new Object[] { blueWhaleSize }, 1 /* docId */, blueWhaleScore, 0 /* shardIndex */)
-              : createEmptyGroupDocs(blueGroupValue, new Object[] { blueWhaleSize });
-
-      final GroupDocs<String> group2 = haveRedAnt
-          ? createSingletonGroupDocs(redGroupValue, new Object[] { redAntSize }, 2 /* docId */, redAntScore, 0 /* shardIndex */)
-              : createEmptyGroupDocs(redGroupValue, new Object[] { redAntSize });
-
-      shard1TopGroups = new TopGroups<String>(
-          sort.getSort() /* groupSort */,
-          sort.getSort() /* withinGroupSort */,
-          group1.scoreDocs.length + group2.scoreDocs.length /* totalHitCount */,
-          group1.scoreDocs.length + group2.scoreDocs.length /* totalGroupedHitCount */,
-          combineGroupDocs(group1, group2) /* groups */,
-          (haveBlueWhale ? blueWhaleScore : (haveRedAnt ? redAntScore : Float.NaN)) /* maxScore */);
+      final GroupDocs<String> group1 =
+          haveBlueWhale
+              ? createSingletonGroupDocs(
+                  blueGroupValue,
+                  new Object[] {blueWhaleSize},
+                  1 /* docId */,
+                  blueWhaleScore,
+                  0 /* shardIndex */)
+              : createEmptyGroupDocs(blueGroupValue, new Object[] {blueWhaleSize});
+
+      final GroupDocs<String> group2 =
+          haveRedAnt
+              ? createSingletonGroupDocs(
+                  redGroupValue,
+                  new Object[] {redAntSize},
+                  2 /* docId */,
+                  redAntScore,
+                  0 /* shardIndex */)
+              : createEmptyGroupDocs(redGroupValue, new Object[] {redAntSize});
+
+      shard1TopGroups =
+          new TopGroups<String>(
+              sort.getSort() /* groupSort */,
+              sort.getSort() /* withinGroupSort */,
+              group1.scoreDocs.length + group2.scoreDocs.length /* totalHitCount */,
+              group1.scoreDocs.length + group2.scoreDocs.length /* totalGroupedHitCount */,
+              combineGroupDocs(group1, group2) /* groups */,
+              (haveBlueWhale
+                  ? blueWhaleScore
+                  : (haveRedAnt ? redAntScore : Float.NaN)) /* maxScore */);
     }
 
     final TopGroups<String> shard2TopGroups;
     {
-      final GroupDocs<String> group1 = haveBlueDragonfly
-          ? createSingletonGroupDocs(blueGroupValue, new Object[] { blueDragonflySize }, 3 /* docId */, blueDragonflyScore, 1 /* shardIndex */)
-              : createEmptyGroupDocs(blueGroupValue, new Object[] { blueDragonflySize });
-
-      final GroupDocs<String> group2 = haveRedSquirrel
-      ? createSingletonGroupDocs(redGroupValue, new Object[] { redSquirrelSize }, 4 /* docId */, redSquirrelScore, 1 /* shardIndex */)
-          : createEmptyGroupDocs(redGroupValue, new Object[] { redSquirrelSize });
-
-      shard2TopGroups = new TopGroups<String>(
-          sort.getSort() /* groupSort */,
-          sort.getSort() /* withinGroupSort */,
-          group1.scoreDocs.length + group2.scoreDocs.length /* totalHitCount */,
-          group1.scoreDocs.length + group2.scoreDocs.length /* totalGroupedHitCount */,
-          combineGroupDocs(group1, group2) /* groups */,
-          (haveRedSquirrel ? redSquirrelScore : (haveBlueDragonfly ? blueDragonflyScore : Float.NaN)) /* maxScore */);
+      final GroupDocs<String> group1 =
+          haveBlueDragonfly
+              ? createSingletonGroupDocs(
+                  blueGroupValue,
+                  new Object[] {blueDragonflySize},
+                  3 /* docId */,
+                  blueDragonflyScore,
+                  1 /* shardIndex */)
+              : createEmptyGroupDocs(blueGroupValue, new Object[] {blueDragonflySize});
+
+      final GroupDocs<String> group2 =
+          haveRedSquirrel
+              ? createSingletonGroupDocs(
+                  redGroupValue,
+                  new Object[] {redSquirrelSize},
+                  4 /* docId */,
+                  redSquirrelScore,
+                  1 /* shardIndex */)
+              : createEmptyGroupDocs(redGroupValue, new Object[] {redSquirrelSize});
+
+      shard2TopGroups =
+          new TopGroups<String>(
+              sort.getSort() /* groupSort */,
+              sort.getSort() /* withinGroupSort */,
+              group1.scoreDocs.length + group2.scoreDocs.length /* totalHitCount */,
+              group1.scoreDocs.length + group2.scoreDocs.length /* totalGroupedHitCount */,
+              combineGroupDocs(group1, group2) /* groups */,
+              (haveRedSquirrel
+                  ? redSquirrelScore
+                  : (haveBlueDragonfly ? blueDragonflyScore : Float.NaN)) /* maxScore */);
     }
 
-    final TopGroups<String> mergedTopGroups = TopGroups.<String>merge(
-        combineTopGroups(shard1TopGroups, shard2TopGroups),
-        sort /* groupSort */,
-        sort /* docSort */,
-        0 /* docOffset */,
-        2 /* docTopN */,
-        TopGroups.ScoreMergeMode.None);
+    final TopGroups<String> mergedTopGroups =
+        TopGroups.<String>merge(
+            combineTopGroups(shard1TopGroups, shard2TopGroups),
+            sort /* groupSort */,
+            sort /* docSort */,
+            0 /* docOffset */,
+            2 /* docTopN */,
+            TopGroups.ScoreMergeMode.None);
     assertNotNull(mergedTopGroups);
 
     final int expectedCount =
-        (haveBlueWhale     ? 1 : 0) +
-        (haveRedAnt        ? 1 : 0) +
-        (haveBlueDragonfly ? 1 : 0) +
-        (haveRedSquirrel   ? 1 : 0);
+        (haveBlueWhale ? 1 : 0)
+            + (haveRedAnt ? 1 : 0)
+            + (haveBlueDragonfly ? 1 : 0)
+            + (haveRedSquirrel ? 1 : 0);
 
     assertEquals(expectedCount, mergedTopGroups.totalHitCount);
     assertEquals(expectedCount, mergedTopGroups.totalGroupedHitCount);
@@ -173,11 +204,13 @@ public class TestTopGroups extends LuceneTestCase {
     }
 
     final float expectedMaxScore =
-        (haveBlueWhale ? blueWhaleScore
-            : (haveRedSquirrel ? redSquirrelScore
-                : (haveBlueDragonfly ? blueDragonflyScore
-                    : (haveRedAnt ? redAntScore
-                        : Float.NaN))));
+        (haveBlueWhale
+            ? blueWhaleScore
+            : (haveRedSquirrel
+                ? redSquirrelScore
+                : (haveBlueDragonfly
+                    ? blueDragonflyScore
+                    : (haveRedAnt ? redAntScore : Float.NaN))));
     checkMaxScore(expectedMaxScore, mergedTopGroups.maxScore);
   }
 
@@ -191,41 +224,43 @@ public class TestTopGroups extends LuceneTestCase {
 
   // helper methods
 
-  private static GroupDocs<String> createEmptyGroupDocs(String groupValue, Object[] groupSortValues) {
-    return new  GroupDocs<String>(
+  private static GroupDocs<String> createEmptyGroupDocs(
+      String groupValue, Object[] groupSortValues) {
+    return new GroupDocs<String>(
         Float.NaN /* score */,
         Float.NaN /* maxScore */,
         new TotalHits(0, TotalHits.Relation.EQUAL_TO),
         new ScoreDoc[0],
         groupValue,
         groupSortValues);
-    }
+  }
 
-  private static GroupDocs<String> createSingletonGroupDocs(String groupValue, Object[] groupSortValues,
-      int docId, float docScore, int shardIndex) {
-    return new  GroupDocs<String>(
+  private static GroupDocs<String> createSingletonGroupDocs(
+      String groupValue, Object[] groupSortValues, int docId, float docScore, int shardIndex) {
+    return new GroupDocs<String>(
         Float.NaN /* score */,
         docScore /* maxScore */,
         new TotalHits(1, TotalHits.Relation.EQUAL_TO),
-        new ScoreDoc[] { new ScoreDoc(docId, docScore, shardIndex) },
+        new ScoreDoc[] {new ScoreDoc(docId, docScore, shardIndex)},
         groupValue,
         groupSortValues);
-    }
+  }
 
-  private static GroupDocs<String>[] combineGroupDocs(GroupDocs<String> group0, GroupDocs<String> group1) {
-    @SuppressWarnings({"unchecked","rawtypes"})
+  private static GroupDocs<String>[] combineGroupDocs(
+      GroupDocs<String> group0, GroupDocs<String> group1) {
+    @SuppressWarnings({"unchecked", "rawtypes"})
     final GroupDocs<String>[] groups = new GroupDocs[2];
     groups[0] = group0;
     groups[1] = group1;
     return groups;
   }
 
-  private static TopGroups<String>[] combineTopGroups(TopGroups<String> group0, TopGroups<String> group1) {
-    @SuppressWarnings({"unchecked","rawtypes"})
+  private static TopGroups<String>[] combineTopGroups(
+      TopGroups<String> group0, TopGroups<String> group1) {
+    @SuppressWarnings({"unchecked", "rawtypes"})
     final TopGroups<String>[] groups = new TopGroups[2];
     groups[0] = group0;
     groups[1] = group1;
     return groups;
   }
-
 }
diff --git a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestValueSourceGroupSelector.java b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestValueSourceGroupSelector.java
index 9e652b6..0c62169 100644
--- a/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestValueSourceGroupSelector.java
+++ b/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestValueSourceGroupSelector.java
@@ -18,7 +18,6 @@
 package org.apache.lucene.search.grouping;
 
 import java.util.HashMap;
-
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.SortedDocValuesField;
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/AbstractHandler.java b/lucene/luke/src/java/org/apache/lucene/luke/app/AbstractHandler.java
index bca88f1..5abd9d9 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/AbstractHandler.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/AbstractHandler.java
@@ -20,7 +20,6 @@ package org.apache.lucene.luke.app;
 import java.lang.invoke.MethodHandles;
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.logging.log4j.Logger;
 import org.apache.lucene.luke.util.LoggerFactory;
 
@@ -45,5 +44,4 @@ public abstract class AbstractHandler<T extends Observer> {
   }
 
   protected abstract void notifyOne(T observer);
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryHandler.java b/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryHandler.java
index ec4e7e5..3d2de05 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryHandler.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryHandler.java
@@ -19,7 +19,6 @@ package org.apache.lucene.luke.app;
 
 import java.io.IOException;
 import java.util.Objects;
-
 import org.apache.lucene.luke.app.desktop.util.MessageUtils;
 import org.apache.lucene.luke.models.LukeException;
 import org.apache.lucene.luke.models.util.IndexUtils;
@@ -60,7 +59,8 @@ public final class DirectoryHandler extends AbstractHandler<DirectoryObserver> {
     try {
       dir = IndexUtils.openDirectory(indexPath, dirImpl);
     } catch (IOException e) {
-      throw new LukeException(MessageUtils.getLocalizedMessage("openindex.message.index_path_invalid", indexPath), e);
+      throw new LukeException(
+          MessageUtils.getLocalizedMessage("openindex.message.index_path_invalid", indexPath), e);
     }
 
     state = new LukeStateImpl();
@@ -108,5 +108,4 @@ public final class DirectoryHandler extends AbstractHandler<DirectoryObserver> {
       return dir;
     }
   }
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryObserver.java b/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryObserver.java
index 6437115..83afae0 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryObserver.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/DirectoryObserver.java
@@ -23,5 +23,4 @@ public interface DirectoryObserver extends Observer {
   void openDirectory(LukeState state);
 
   void closeDirectory();
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/IndexHandler.java b/lucene/luke/src/java/org/apache/lucene/luke/app/IndexHandler.java
index 885c34a..f3fc635 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/IndexHandler.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/IndexHandler.java
@@ -19,7 +19,6 @@ package org.apache.lucene.luke.app;
 
 import java.lang.invoke.MethodHandles;
 import java.util.Objects;
-
 import org.apache.logging.log4j.Logger;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.luke.app.desktop.util.MessageUtils;
@@ -57,7 +56,12 @@ public final class IndexHandler extends AbstractHandler<IndexObserver> {
     open(indexPath, dirImpl, false, false, false);
   }
 
-  public void open(String indexPath, String dirImpl, boolean readOnly, boolean useCompound, boolean keepAllCommits) {
+  public void open(
+      String indexPath,
+      String dirImpl,
+      boolean readOnly,
+      boolean useCompound,
+      boolean keepAllCommits) {
     Objects.requireNonNull(indexPath);
 
     if (indexOpened()) {
@@ -69,7 +73,8 @@ public final class IndexHandler extends AbstractHandler<IndexObserver> {
       reader = IndexUtils.openIndex(indexPath, dirImpl);
     } catch (Exception e) {
       log.error("Error opening index", e);
-      throw new LukeException(MessageUtils.getLocalizedMessage("openindex.message.index_path_invalid", indexPath), e);
+      throw new LukeException(
+          MessageUtils.getLocalizedMessage("openindex.message.index_path_invalid", indexPath), e);
     }
 
     state = new LukeStateImpl();
@@ -96,7 +101,12 @@ public final class IndexHandler extends AbstractHandler<IndexObserver> {
 
   public void reOpen() {
     close();
-    open(state.getIndexPath(), state.getDirImpl(), state.readOnly(), state.useCompound(), state.keepAllCommits());
+    open(
+        state.getIndexPath(),
+        state.getDirImpl(),
+        state.readOnly(),
+        state.useCompound(),
+        state.keepAllCommits());
   }
 
   public LukeState getState() {
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/IndexObserver.java b/lucene/luke/src/java/org/apache/lucene/luke/app/IndexObserver.java
index 599b109..21265ae 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/IndexObserver.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/IndexObserver.java
@@ -23,5 +23,4 @@ public interface IndexObserver extends Observer {
   void openIndex(LukeState state);
 
   void closeIndex();
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/LukeState.java b/lucene/luke/src/java/org/apache/lucene/luke/app/LukeState.java
index 33ca829..492efd3 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/LukeState.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/LukeState.java
@@ -21,9 +21,7 @@ import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.store.Directory;
 
-/**
- * Holder for current index/directory.
- */
+/** Holder for current index/directory. */
 public interface LukeState {
 
   String getIndexPath();
@@ -53,5 +51,4 @@ public interface LukeState {
   default boolean hasDirectoryReader() {
     return getIndexReader() instanceof DirectoryReader;
   }
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/Observer.java b/lucene/luke/src/java/org/apache/lucene/luke/app/Observer.java
index 290865b..16d35a7 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/Observer.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/Observer.java
@@ -18,5 +18,4 @@
 package org.apache.lucene.luke.app;
 
 /** Marker interface for observers */
-public interface Observer {
-}
+public interface Observer {}
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/LukeMain.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/LukeMain.java
index fae52f2..78c5254 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/LukeMain.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/LukeMain.java
@@ -17,13 +17,14 @@
 
 package org.apache.lucene.luke.app.desktop;
 
-import javax.swing.JFrame;
-import javax.swing.UIManager;
+import static org.apache.lucene.luke.app.desktop.util.ExceptionHandler.handle;
+
 import java.awt.GraphicsEnvironment;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.nio.file.FileSystems;
-
+import javax.swing.JFrame;
+import javax.swing.UIManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.lucene.luke.app.desktop.components.LukeWindowProvider;
 import org.apache.lucene.luke.app.desktop.components.dialog.menubar.OpenIndexDialogFactory;
@@ -32,20 +33,22 @@ import org.apache.lucene.luke.app.desktop.util.FontUtils;
 import org.apache.lucene.luke.app.desktop.util.MessageUtils;
 import org.apache.lucene.luke.util.LoggerFactory;
 
-import static org.apache.lucene.luke.app.desktop.util.ExceptionHandler.handle;
-
 /** Entry class for desktop Luke */
 public class LukeMain {
 
-  public static final String LOG_FILE = System.getProperty("user.home") +
-      FileSystems.getDefault().getSeparator() + ".luke.d" +
-      FileSystems.getDefault().getSeparator() + "luke.log";
+  public static final String LOG_FILE =
+      System.getProperty("user.home")
+          + FileSystems.getDefault().getSeparator()
+          + ".luke.d"
+          + FileSystems.getDefault().getSeparator()
+          + "luke.log";
 
   static {
     LoggerFactory.initGuiLogging(LOG_FILE);
   }
+
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-  
+
   private static JFrame frame;
 
   public static JFrame getOwnerFrame() {
@@ -55,9 +58,7 @@ public class LukeMain {
   private static void createAndShowGUI() {
     // uncaught error handler
     MessageBroker messageBroker = MessageBroker.getInstance();
-    Thread.setDefaultUncaughtExceptionHandler((thread, cause) ->
-        handle(cause, messageBroker)
-    );
+    Thread.setDefaultUncaughtExceptionHandler((thread, cause) -> handle(cause, messageBroker));
 
     try {
       frame = new LukeWindowProvider().get();
@@ -68,9 +69,12 @@ public class LukeMain {
 
       // show open index dialog
       OpenIndexDialogFactory openIndexDialogFactory = OpenIndexDialogFactory.getInstance();
-      new DialogOpener<>(openIndexDialogFactory).open(MessageUtils.getLocalizedMessage("openindex.dialog.title"), 600, 420,
-          (factory) -> {
-          });
+      new DialogOpener<>(openIndexDialogFactory)
+          .open(
+              MessageUtils.getLocalizedMessage("openindex.dialog.title"),
+              600,
+              420,
+              (factory) -> {});
     } catch (IOException e) {
       messageBroker.showUnknownErrorMessage();
       log.error("Cannot initialize components.", e);
@@ -79,7 +83,8 @@ public class LukeMain {
 
   public static void main(String[] args) throws Exception {
     String lookAndFeelClassName = UIManager.getSystemLookAndFeelClassName();
-    if (!lookAndFeelClassName.contains("AquaLookAndFeel") && !lookAndFeelClassName.contains("PlasticXPLookAndFeel")) {
+    if (!lookAndFeelClassName.contains("AquaLookAndFeel")
+        && !lookAndFeelClassName.contains("PlasticXPLookAndFeel")) {
       // may be running on linux platform
       lookAndFeelClassName = "javax.swing.plaf.metal.MetalLookAndFeel";
     }
@@ -89,6 +94,5 @@ public class LukeMain {
     genv.registerFont(FontUtils.createElegantIconFont());
 
     javax.swing.SwingUtilities.invokeLater(LukeMain::createAndShowGUI);
-
   }
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/MessageBroker.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/MessageBroker.java
index 9609a2f..56c791b 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/MessageBroker.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/MessageBroker.java
@@ -61,5 +61,4 @@ public class MessageBroker {
 
     void clearStatusMessage();
   }
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/Preferences.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/Preferences.java
index b0df660..982e4d8 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/Preferences.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/Preferences.java
@@ -38,7 +38,13 @@ public interface Preferences {
 
   boolean isKeepAllCommits();
 
-  void setIndexOpenerPrefs(boolean readOnly, String dirImpl, boolean noReader, boolean useCompound, boolean keepAllCommits) throws IOException;
+  void setIndexOpenerPrefs(
+      boolean readOnly,
+      String dirImpl,
+      boolean noReader,
+      boolean useCompound,
+      boolean keepAllCommits)
+      throws IOException;
 
   ColorTheme getColorTheme();
 
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesFactory.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesFactory.java
index 2502553..b043e8f 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesFactory.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesFactory.java
@@ -24,11 +24,10 @@ public class PreferencesFactory {
 
   private static Preferences prefs;
 
-  public synchronized static Preferences getInstance() throws IOException {
+  public static synchronized Preferences getInstance() throws IOException {
     if (prefs == null) {
       prefs = new PreferencesImpl();
     }
     return prefs;
   }
-
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesImpl.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesImpl.java
index ebf78c5..47d6331 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesImpl.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/PreferencesImpl.java
@@ -23,7 +23,6 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.lucene.luke.app.desktop.util.inifile.IniFile;
 import org.apache.lucene.luke.app.desktop.util.inifile.SimpleIniFile;
 import org.apache.lucene.store.FSDirectory;
@@ -31,14 +30,14 @@ import org.apache.lucene.store.FSDirectory;
 /** Default implementation of {@link Preferences} */
 public final class PreferencesImpl implements Preferences {
 
-  private static final String CONFIG_DIR = System.getProperty("user.home") + FileSystems.getDefault().getSeparator() + ".luke.d";
+  private static final String CONFIG_DIR =
+      System.getProperty("user.home") + FileSystems.getDefault().getSeparator() + ".luke.d";
   private static final String INIT_FILE = "luke.ini";
   private static final String HISTORY_FILE = "history";
   private static final int MAX_HISTORY = 10;
 
   private final IniFile ini = new SimpleIniFile();
 
-
   private final List<String> history = new ArrayList<>();
 
   public PreferencesImpl() throws IOException {
@@ -61,7 +60,6 @@ public final class PreferencesImpl implements Preferences {
       List<String> allHistory = Files.readAllLines(histFile);
       history.addAll(allHistory.subList(0, Math.min(MAX_HISTORY, allHistory.size())));
     }
-
   }
 
   public List<String> getHistory() {
@@ -128,7 +126,13 @@ public final class PreferencesImpl implements Preferences {
   }
 
   @Override
-  public void setIndexOpenerPrefs(boolean readOnly, String dirImpl, boolean noReader, boolean useCompound, boolean keepAllCommits) throws IOException {
+  public void setIndexOpenerPrefs(
+      boolean readOnly,
+      String dirImpl,
+      boolean noReader,
+      boolean useCompound,
+      boolean keepAllCommits)
+      throws IOException {
     ini.put("opener", "readOnly", readOnly);
     ini.put("opener", "dirImpl", dirImpl);
     ini.put("opener", "noReader", noReader);
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisPanelProvider.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisPanelProvider.java
index 864dfcd..b031437 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisPanelProvider.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisPanelProvider.java
@@ -17,16 +17,6 @@
 
 package org.apache.lucene.luke.app.desktop.components;
 
-import javax.swing.BorderFactory;
-import javax.swing.ButtonGroup;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.JTextArea;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.FlowLayout;
@@ -39,7 +29,16 @@ import java.io.IOException;
 import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-
+import javax.swing.BorderFactory;
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTextArea;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.custom.CustomAnalyzer;
 import org.apache.lucene.analysis.standard.StandardAnalyzer;
@@ -126,16 +125,21 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
 
     operatorRegistry.register(AnalysisTabOperator.class, this);
 
-    operatorRegistry.get(PresetAnalyzerPanelOperator.class).ifPresent(operator -> {
-      // Scanning all Analyzer types will take time...
-      ExecutorService executorService =
-          Executors.newFixedThreadPool(1, new NamedThreadFactory("load-preset-analyzer-types"));
-      executorService.execute(() -> {
-        operator.setPresetAnalyzers(analysisModel.getPresetAnalyzerTypes());
-        operator.setSelectedAnalyzer(analysisModel.currentAnalyzer().getClass());
-      });
-      executorService.shutdown();
-    });
+    operatorRegistry
+        .get(PresetAnalyzerPanelOperator.class)
+        .ifPresent(
+            operator -> {
+              // Scanning all Analyzer types will take time...
+              ExecutorService executorService =
+                  Executors.newFixedThreadPool(
+                      1, new NamedThreadFactory("load-preset-analyzer-types"));
+              executorService.execute(
+                  () -> {
+                    operator.setPresetAnalyzers(analysisModel.getPresetAnalyzerTypes());
+                    operator.setSelectedAnalyzer(analysisModel.currentAnalyzer().getClass());
+                  });
+              executorService.shutdown();
+            });
   }
 
   public JPanel get() {
@@ -143,7 +147,8 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
     panel.setOpaque(false);
     panel.setBorder(BorderFactory.createLineBorder(Color.gray));
 
-    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, initUpperPanel(), initLowerPanel());
+    JSplitPane splitPane =
+        new JSplitPane(JSplitPane.VERTICAL_SPLIT, initUpperPanel(), initLowerPanel());
     splitPane.setOpaque(false);
     splitPane.setDividerLocation(320);
     panel.add(splitPane);
@@ -194,16 +199,18 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
 
     JPanel analyzerName = new JPanel(new FlowLayout(FlowLayout.LEADING, 10, 2));
     analyzerName.setOpaque(false);
-    analyzerName.add(new JLabel(MessageUtils.getLocalizedMessage("analysis.label.selected_analyzer")));
+    analyzerName.add(
+        new JLabel(MessageUtils.getLocalizedMessage("analysis.label.selected_analyzer")));
     analyzerNameLbl.setText(analysisModel.currentAnalyzer().getClass().getName());
     analyzerName.add(analyzerNameLbl);
     showChainLbl.setText(MessageUtils.getLocalizedMessage("analysis.label.show_chain"));
-    showChainLbl.addMouseListener(new MouseAdapter() {
-      @Override
-      public void mouseClicked(MouseEvent e) {
-        listeners.showAnalysisChain(e);
-      }
-    });
+    showChainLbl.addMouseListener(
+        new MouseAdapter() {
+          @Override
+          public void mouseClicked(MouseEvent e) {
+            listeners.showAnalysisChain(e);
+          }
+        });
     showChainLbl.setVisible(analysisModel.currentAnalyzer() instanceof CustomAnalyzer);
     analyzerName.add(FontUtils.toLinkText(showChainLbl));
     inner1.add(analyzerName, BorderLayout.PAGE_START);
@@ -217,8 +224,10 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
     inputArea.setText(MessageUtils.getLocalizedMessage("analysis.textarea.prompt"));
     input.add(new JScrollPane(inputArea));
 
-    JButton executeBtn = new JButton(FontUtils.elegantIconHtml("&#xe007;",
-        MessageUtils.getLocalizedMessage("analysis.button.test")));
+    JButton executeBtn =
+        new JButton(
+            FontUtils.elegantIconHtml(
+                "&#xe007;", MessageUtils.getLocalizedMessage("analysis.button.test")));
     executeBtn.setFont(StyleConstants.FONT_BUTTON_LARGE);
     executeBtn.setMargin(new Insets(3, 3, 3, 3));
     executeBtn.addActionListener(listeners::executeAnalysis);
@@ -233,13 +242,16 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
     JButton clearBtn = new JButton(MessageUtils.getLocalizedMessage("button.clear"));
     clearBtn.setFont(StyleConstants.FONT_BUTTON_LARGE);
     clearBtn.setMargin(new Insets(5, 5, 5, 5));
-    clearBtn.addActionListener(e -> {
-      inputArea.setText("");
-      operatorRegistry.get(SimpleAnalyzeResultPanelOperator.class).ifPresent(
-          SimpleAnalyzeResultPanelOperator::clearTable);
-      operatorRegistry.get(StepByStepAnalyzeResultPanelOperator.class).ifPresent(
-          StepByStepAnalyzeResultPanelOperator::clearTable);
-    });
+    clearBtn.addActionListener(
+        e -> {
+          inputArea.setText("");
+          operatorRegistry
+              .get(SimpleAnalyzeResultPanelOperator.class)
+              .ifPresent(SimpleAnalyzeResultPanelOperator::clearTable);
+          operatorRegistry
+              .get(StepByStepAnalyzeResultPanelOperator.class)
+              .ifPresent(StepByStepAnalyzeResultPanelOperator::clearTable);
+        });
     input.add(clearBtn);
 
     inner1.add(input, BorderLayout.CENTER);
@@ -259,20 +271,26 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
       mainPanel.remove(custom);
       mainPanel.add(preset, BorderLayout.CENTER);
 
-      operatorRegistry.get(PresetAnalyzerPanelOperator.class).ifPresent(operator -> {
-        operator.setPresetAnalyzers(analysisModel.getPresetAnalyzerTypes());
-        operator.setSelectedAnalyzer(analysisModel.currentAnalyzer().getClass());
-      });
+      operatorRegistry
+          .get(PresetAnalyzerPanelOperator.class)
+          .ifPresent(
+              operator -> {
+                operator.setPresetAnalyzers(analysisModel.getPresetAnalyzerTypes());
+                operator.setSelectedAnalyzer(analysisModel.currentAnalyzer().getClass());
+              });
       stepByStepCB.setSelected(false);
       stepByStepCB.setVisible(false);
     } else if (command.equalsIgnoreCase(TYPE_CUSTOM)) {
       mainPanel.remove(preset);
       mainPanel.add(custom, BorderLayout.CENTER);
 
-      operatorRegistry.get(CustomAnalyzerPanelOperator.class).ifPresent(operator -> {
-        operator.setAnalysisModel(analysisModel);
-        operator.resetAnalysisComponents();
-      });
+      operatorRegistry
+          .get(CustomAnalyzerPanelOperator.class)
+          .ifPresent(
+              operator -> {
+                operator.setAnalysisModel(analysisModel);
+                operator.resetAnalysisComponents();
+              });
       stepByStepCB.setVisible(true);
     }
     mainPanel.setVisible(false);
@@ -282,16 +300,20 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
   void executeAnalysis() {
     String text = inputArea.getText();
     if (Objects.isNull(text) || text.isEmpty()) {
-      messageBroker.showStatusMessage(MessageUtils.getLocalizedMessage("analysis.message.empry_input"));
+      messageBroker.showStatusMessage(
+          MessageUtils.getLocalizedMessage("analysis.message.empry_input"));
     }
 
     lowerPanel.remove(stepByStepResult);
     lowerPanel.add(simpleResult, BorderLayout.CENTER);
 
-    operatorRegistry.get(SimpleAnalyzeResultPanelOperator.class).ifPresent(operator -> {
-      operator.setAnalysisModel(analysisModel);
-      operator.executeAnalysis(text);
-    });
+    operatorRegistry
+        .get(SimpleAnalyzeResultPanelOperator.class)
+        .ifPresent(
+            operator -> {
+              operator.setAnalysisModel(analysisModel);
+              operator.executeAnalysis(text);
+            });
 
     lowerPanel.setVisible(false);
     lowerPanel.setVisible(true);
@@ -300,14 +322,18 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
   void executeAnalysisStepByStep() {
     String text = inputArea.getText();
     if (Objects.isNull(text) || text.isEmpty()) {
-      messageBroker.showStatusMessage(MessageUtils.getLocalizedMessage("analysis.message.empry_input"));
+      messageBroker.showStatusMessage(
+          MessageUtils.getLocalizedMessage("analysis.message.empry_input"));
     }
     lowerPanel.remove(simpleResult);
     lowerPanel.add(stepByStepResult, BorderLayout.CENTER);
-    operatorRegistry.get(StepByStepAnalyzeResultPanelOperator.class).ifPresent(operator -> {
-      operator.setAnalysisModel(analysisModel);
-      operator.executeAnalysisStepByStep(text);
-    });
+    operatorRegistry
+        .get(StepByStepAnalyzeResultPanelOperator.class)
+        .ifPresent(
+            operator -> {
+              operator.setAnalysisModel(analysisModel);
+              operator.executeAnalysisStepByStep(text);
+            });
 
     lowerPanel.setVisible(false);
     lowerPanel.setVisible(true);
@@ -316,10 +342,14 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
   void showAnalysisChainDialog() {
     if (getCurrentAnalyzer() instanceof CustomAnalyzer) {
       CustomAnalyzer analyzer = (CustomAnalyzer) getCurrentAnalyzer();
-      new DialogOpener<>(analysisChainDialogFactory).open("Analysis chain", 600, 320,
-          (factory) -> {
-            factory.setAnalyzer(analyzer);
-          });
+      new DialogOpener<>(analysisChainDialogFactory)
+          .open(
+              "Analysis chain",
+              600,
+              320,
+              (factory) -> {
+                factory.setAnalyzer(analyzer);
+              });
     }
   }
 
@@ -328,12 +358,15 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
     analysisModel.createAnalyzerFromClassName(analyzerType);
     analyzerNameLbl.setText(analysisModel.currentAnalyzer().getClass().getName());
     showChainLbl.setVisible(false);
-    operatorRegistry.get(AnalyzerTabOperator.class).ifPresent(operator ->
-        operator.setAnalyzer(analysisModel.currentAnalyzer()));
-    operatorRegistry.get(MLTTabOperator.class).ifPresent(operator ->
-        operator.setAnalyzer(analysisModel.currentAnalyzer()));
-    operatorRegistry.get(AddDocumentDialogOperator.class).ifPresent(operator ->
-        operator.setAnalyzer(analysisModel.currentAnalyzer()));
+    operatorRegistry
+        .get(AnalyzerTabOperator.class)
+        .ifPresent(operator -> operator.setAnalyzer(analysisModel.currentAnalyzer()));
+    operatorRegistry
+        .get(MLTTabOperator.class)
+        .ifPresent(operator -> operator.setAnalyzer(analysisModel.currentAnalyzer()));
+    operatorRegistry
+        .get(AddDocumentDialogOperator.class)
+        .ifPresent(operator -> operator.setAnalyzer(analysisModel.currentAnalyzer()));
   }
 
   @Override
@@ -341,12 +374,15 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
     analysisModel.buildCustomAnalyzer(config);
     analyzerNameLbl.setText(analysisModel.currentAnalyzer().getClass().getName());
     showChainLbl.setVisible(true);
-    operatorRegistry.get(AnalyzerTabOperator.class).ifPresent(operator ->
-        operator.setAnalyzer(analysisModel.currentAnalyzer()));
-    operatorRegistry.get(MLTTabOperator.class).ifPresent(operator ->
-        operator.setAnalyzer(analysisModel.currentAnalyzer()));
-    operatorRegistry.get(AddDocumentDialogOperator.class).ifPresent(operator ->
-        operator.setAnalyzer(analysisModel.currentAnalyzer()));
+    operatorRegistry
+        .get(AnalyzerTabOperator.class)
+        .ifPresent(operator -> operator.setAnalyzer(analysisModel.currentAnalyzer()));
+    operatorRegistry
+        .get(MLTTabOperator.class)
+        .ifPresent(operator -> operator.setAnalyzer(analysisModel.currentAnalyzer()));
+    operatorRegistry
+        .get(AddDocumentDialogOperator.class)
+        .ifPresent(operator -> operator.setAnalyzer(analysisModel.currentAnalyzer()));
   }
 
   @Override
@@ -372,9 +408,6 @@ public final class AnalysisPanelProvider implements AnalysisTabOperator {
       }
     }
 
-    void executeAnalysisStepByStep(ActionEvent e) {
-    }
+    void executeAnalysisStepByStep(ActionEvent e) {}
   }
-
 }
-
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisTabOperator.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisTabOperator.java
index 555f1c0..1ad7d5c 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisTabOperator.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/AnalysisTabOperator.java
@@ -28,6 +28,4 @@ public interface AnalysisTabOperator extends ComponentOperatorRegistry.Component
   void setAnalyzerByCustomConfiguration(CustomAnalyzerConfig config);
 
   Analyzer getCurrentAnalyzer();
-
 }
-
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/CommitsPanelProvider.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/CommitsPanelProvider.java
index d06abcc..8d55855 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/CommitsPanelProvider.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/CommitsPanelProvider.java
@@ -17,6 +17,18 @@
 
 package org.apache.lucene.luke.app.desktop.components;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.ButtonGroup;
@@ -32,19 +44,6 @@ import javax.swing.JSplitPane;
 import javax.swing.JTable;
 import javax.swing.JTextArea;
 import javax.swing.ListSelectionModel;
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.FlowLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.luke.app.DirectoryHandler;
 import org.apache.lucene.luke.app.DirectoryObserver;
@@ -100,7 +99,8 @@ public final class CommitsPanelProvider {
     panel.setOpaque(false);
     panel.setBorder(BorderFactory.createLineBorder(Color.gray));
 
-    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, initUpperPanel(), initLowerPanel());
+    JSplitPane splitPane =
+        new JSplitPane(JSplitPane.VERTICAL_SPLIT, initUpperPanel(), initLowerPanel());
     splitPane.setOpaque(false);
     splitPane.setBorder(BorderFactory.createEmptyBorder());
     splitPane.setDividerLocation(120);
@@ -162,7 +162,11 @@ public final class CommitsPanelProvider {
     userDataTA.setLineWrap(true);
     userDataTA.setWrapStyleWord(true);
     userDataTA.setEditable(false);
-    JScrollPane userDataScroll = new JScrollPane(userDataTA, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+    JScrollPane userDataScroll =
+        new JScrollPane(
+            userDataTA,
+            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
     c1.gridx = 1;
     c1.gridy = 2;
     c1.weightx = 0.5;
@@ -179,7 +183,8 @@ public final class CommitsPanelProvider {
     panel.setOpaque(false);
     panel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
 
-    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, initFilesPanel(), initSegmentsPanel());
+    JSplitPane splitPane =
+        new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, initFilesPanel(), initSegmentsPanel());
     splitPane.setOpaque(false);
     splitPane.setBorder(BorderFactory.createEmptyBorder());
     splitPane.setDividerLocation(300);
@@ -197,7 +202,12 @@ public final class CommitsPanelProvider {
     header.add(new JLabel(MessageUtils.getLocalizedMessage("commits.label.files")));
     panel.add(header, BorderLayout.PAGE_START);
 
-    TableUtils.setupTable(filesTable, ListSelectionModel.SINGLE_SELECTION, new FilesTableModel(), null, FilesTableModel.Column.FILENAME.getColumnWidth());
+    TableUtils.setupTable(
+        filesTable,
+        ListSelectionModel.SINGLE_SELECTION,
+        new FilesTableModel(),
+        null,
+        FilesTableModel.Column.FILENAME.getColumnWidth());
     panel.add(new JScrollPane(filesTable), BorderLayout.CENTER);
 
     return panel;
@@ -213,7 +223,10 @@ public final class CommitsPanelProvider {
     segments.add(new JLabel(MessageUtils.getLocalizedMessage("commits.label.segments")));
     panel.add(segments);
 
-    TableUtils.setupTable(segmentsTable, ListSelectionModel.SINGLE_SELECTION, new SegmentsTableModel(),
+    TableUtils.setupTable(
+        segmentsTable,
+        ListSelectionModel.SINGLE_SELECTION,
+        new SegmentsTableModel(),
         new MouseAdapter() {
           @Override
           public void mouseClicked(MouseEvent e) {
@@ -241,12 +254,13 @@ public final class CommitsPanelProvider {
     diagRB.setSelected(true);
     diagRB.setEnabled(false);
     diagRB.setOpaque(false);
-    diagRB.addMouseListener(new MouseAdapter() {
-      @Override
-      public void mouseClicked(MouseEvent e) {
-        listeners.showSegmentDetails(e);
-      }
-    });
+    diagRB.addMouseListener(
+        new MouseAdapter() {
+          @Override
+          public void mouseClicked(MouseEvent e) {
+            listeners.showSegmentDetails(e);
+          }
+        });
     buttons.add(diagRB);
 
     attrRB.setText("Attributes");
@@ -254,12 +268,13 @@ public final class CommitsPanelProvider {
     attrRB.setSelected(false);
     attrRB.setEnabled(false);
     attrRB.setOpaque(false);
-    attrRB.addMouseListener(new MouseAdapter() {
-      @Override
-      public void mouseClicked(MouseEvent e) {
-        listeners.showSegmentDetails(e);
-      }
-    });
+    attrRB.addMouseListener(
+        new MouseAdapter() {
+          @Override
+          public void mouseClicked(MouseEvent e) {
+            listeners.showSegmentDetails(e);
+          }
+        });
     buttons.add(attrRB);
 
     codecRB.setText("Codec");
@@ -267,12 +282,13 @@ public final class CommitsPanelProvider {
     codecRB.setSelected(false);
     codecRB.setEnabled(false);
     codecRB.setOpaque(false);
-    codecRB.addMouseListener(new MouseAdapter() {
-      @Override
-      public void mouseClicked(MouseEvent e) {
-        listeners.showSegmentDetails(e);
-      }
-    });
+    codecRB.addMouseListener(
+        new MouseAdapter() {
+          @Override
+          public void mouseClicked(MouseEvent e) {
+            listeners.showSegmentDetails(e);
+          }
+        });
     buttons.add(codecRB);
 
     rbGroup.add(diagRB);
@@ -296,30 +312,55 @@ public final class CommitsPanelProvider {
     segDetailList.setModel(new DefaultListModel<>());
 
     long commitGen = (long) commitGenCombo.getSelectedItem();
-    commitsModel.getCommit(commitGen).ifPresent(commit -> {
-      deletedLbl.setText(String.valueOf(commit.isDeleted()));
-      segCntLbl.setText(String.valueOf(commit.getSegCount()));
-      userDataTA.setText(commit.getUserData());
-    });
+    commitsModel
+        .getCommit(commitGen)
+        .ifPresent(
+            commit -> {
+              deletedLbl.setText(String.valueOf(commit.isDeleted()));
+              segCntLbl.setText(String.valueOf(commit.getSegCount()));
+              userDataTA.setText(commit.getUserData());
+            });
 
     filesTable.setModel(new FilesTableModel(commitsModel.getFiles(commitGen)));
     filesTable.setShowGrid(true);
-    filesTable.getColumnModel().getColumn(FilesTableModel.Column.FILENAME.getIndex()).setPreferredWidth(FilesTableModel.Column.FILENAME.getColumnWidth());
+    filesTable
+        .getColumnModel()
+        .getColumn(FilesTableModel.Column.FILENAME.getIndex())
+        .setPreferredWidth(FilesTableModel.Column.FILENAME.getColumnWidth());
 
     segmentsTable.setModel(new SegmentsTableModel(commitsModel.getSegments(commitGen)));
     segmentsTable.setShowGrid(true);
-    segmentsTable.getColumnModel().getColumn(SegmentsTableModel.Column.NAME.getIndex()).setPreferredWidth(SegmentsTableModel.Column.NAME.getColumnWidth());
-    segmentsTable.getColumnModel().getColumn(SegmentsTableModel.Column.MAXDOCS.getIndex()).setPreferredWidth(SegmentsTableModel.Column.MAXDOCS.getColumnWidth());
-    segmentsTable.getColumnModel().getColumn(SegmentsTableModel.Column.DELS.getIndex()).setPreferredWidth(SegmentsTableModel.Column.DELS.getColumnWidth());
-    segmentsTable.getColumnModel().getColumn(SegmentsTableModel.Column.DELGEN.getIndex()).setPreferredWidth(SegmentsTableModel.Column.DELGEN.getColumnWidth());
-    segmentsTable.getColumnModel().getColumn(SegmentsTableModel.Column.VERSION.getIndex()).setPreferredWidth(SegmentsTableModel.Column.VERSION.getColumnWidth());
-    segmentsTable.getColumnModel().getColumn(SegmentsTableModel.Column.CODEC.getIndex()).setPreferredWidth(SegmentsTableModel.Column.CODEC.getColumnWidth());
+    segmentsTable
+        .getColumnModel()
+        .getColumn(SegmentsTableModel.Column.NAME.getIndex())
+        .setPreferredWidth(SegmentsTableModel.Column.NAME.getColumnWidth());
+    segmentsTable
+        .getColumnModel()
+        .getColumn(SegmentsTableModel.Column.MAXDOCS.getIndex())
+        .setPreferredWidth(SegmentsTableModel.Column.MAXDOCS.getColumnWidth());
+    segmentsTable
+        .getColumnModel()
+        .getColumn(SegmentsTableModel.Column.DELS.getIndex())
+        .setPreferredWidth(SegmentsTableModel.Column.DELS.getColumnWidth());
+    segmentsTable
+        .getColumnModel()
+        .getColumn(SegmentsTableModel.Column.DELGEN.getIndex())
+        .setPreferredWidth(SegmentsTableModel.Column.DELGEN.getColumnWidth());
+    segmentsTable
+        .getColumnModel()
+        .getColumn(SegmentsTableModel.Column.VERSION.getIndex())
+        .setPreferredWidth(SegmentsTableModel.Column.VERSION.getColumnWidth());
+    segmentsTable
+        .getColumnModel()
+        .getColumn(SegmentsTableModel.Column.CODEC.getIndex())
+        .setPreferredWidth(SegmentsTableModel.Column.CODEC.getColumnWidth());
   }
 
   private void showSegmentDetails() {
     int selectedRow = segmentsTable.getSelectedRow();
-    if (commitGenCombo.getSelectedItem() == null ||
-        selectedRow < 0 || selectedRow >= segmentsTable.getRowCount()) {
+    if (commitGenCombo.getSelectedItem() == null
+        || selectedRow < 0
+        || selectedRow >= segmentsTable.getRowCount()) {
       return;
     }
 
@@ -328,7 +369,8 @@ public final class CommitsPanelProvider {
     codecRB.setEnabled(true);
 
     long commitGen = (long) commitGenCombo.getSelectedItem();
-    String segName = (String) segmentsTable.getValueAt(selectedRow, SegmentsTableModel.Column.NAME.getIndex());
+    String segName =
+        (String) segmentsTable.getValueAt(selectedRow, SegmentsTableModel.Column.NAME.getIndex());
     ActionCommand command = ActionCommand.valueOf(rbGroup.getSelection().getActionCommand());
 
     final DefaultListModel<String> detailsModel = new DefaultListModel<>();
@@ -344,27 +386,30 @@ public final class CommitsPanelProvider {
             .forEach(detailsModel::addElement);
         break;
       case CODEC:
-        commitsModel.getSegmentCodec(commitGen, segName).ifPresent(codec -> {
-          Map<String, String> map = new HashMap<>();
-          map.put("Codec name", codec.getName());
-          map.put("Codec class name", codec.getClass().getName());
-          map.put("Compound format", codec.compoundFormat().getClass().getName());
-          map.put("DocValues format", codec.docValuesFormat().getClass().getName());
-          map.put("FieldInfos format", codec.fieldInfosFormat().getClass().getName());
-          map.put("LiveDocs format", codec.liveDocsFormat().getClass().getName());
-          map.put("Norms format", codec.normsFormat().getClass().getName());
-          map.put("Points format", codec.pointsFormat().getClass().getName());
-          map.put("Postings format", codec.postingsFormat().getClass().getName());
-          map.put("SegmentInfo format", codec.segmentInfoFormat().getClass().getName());
-          map.put("StoredFields format", codec.storedFieldsFormat().getClass().getName());
-          map.put("TermVectors format", codec.termVectorsFormat().getClass().getName());
-          map.entrySet().stream()
-              .map(entry -> entry.getKey() + " = " + entry.getValue()).forEach(detailsModel::addElement);
-        });
+        commitsModel
+            .getSegmentCodec(commitGen, segName)
+            .ifPresent(
+                codec -> {
+                  Map<String, String> map = new HashMap<>();
+                  map.put("Codec name", codec.getName());
+                  map.put("Codec class name", codec.getClass().getName());
+                  map.put("Compound format", codec.compoundFormat().getClass().getName());
+                  map.put("DocValues format", codec.docValuesFormat().getClass().getName());
+                  map.put("FieldInfos format", codec.fieldInfosFormat().getClass().getName());
+                  map.put("LiveDocs format", codec.liveDocsFormat().getClass().getName());
+                  map.put("Norms format", codec.normsFormat().getClass().getName());
+                  map.put("Points format", codec.pointsFormat().getClass().getName());
+                  map.put("Postings format", codec.postingsFormat().getClass().getName());
+                  map.put("SegmentInfo format", codec.segmentInfoFormat().getClass().getName());
+                  map.put("StoredFields format", codec.storedFieldsFormat().getClass().getName());
+                  map.put("TermVectors format", codec.termVectorsFormat().getClass().getName());
+                  map.entrySet().stream()
+                      .map(entry -> entry.getKey() + " = " + entry.getValue())
+                      .forEach(detailsModel::addElement);
+                });
         break;
     }
     segDetailList.setModel(detailsModel);
-
   }
 
   private class ListenerFunctions {
@@ -376,7 +421,6 @@ public final class CommitsPanelProvider {
     void showSegmentDetails(MouseEvent e) {
       CommitsPanelProvider.this.showSegmentDetails();
     }
-
   }
 
   private class Observer implements IndexObserver, DirectoryObserver {
@@ -425,8 +469,17 @@ public final class CommitsPanelProvider {
       deletedLbl.setText("");
       segCntLbl.setText("");
       userDataTA.setText("");
-      TableUtils.setupTable(filesTable, ListSelectionModel.SINGLE_SELECTION, new FilesTableModel(), null, FilesTableModel.Column.FILENAME.getColumnWidth());
-      TableUtils.setupTable(segmentsTable, ListSelectionModel.SINGLE_SELECTION, new SegmentsTableModel(), null,
+      TableUtils.setupTable(
+          filesTable,
+          ListSelectionModel.SINGLE_SELECTION,
+          new FilesTableModel(),
+          null,
+          FilesTableModel.Column.FILENAME.getColumnWidth());
+      TableUtils.setupTable(
+          segmentsTable,
+          ListSelectionModel.SINGLE_SELECTION,
+          new SegmentsTableModel(),
+          null,
           SegmentsTableModel.Column.NAME.getColumnWidth(),
           SegmentsTableModel.Column.MAXDOCS.getColumnWidth(),
           SegmentsTableModel.Column.DELS.getColumnWidth(),
@@ -441,13 +494,14 @@ public final class CommitsPanelProvider {
   }
 
   enum ActionCommand {
-    DIAGNOSTICS, ATTRIBUTES, CODEC;
+    DIAGNOSTICS,
+    ATTRIBUTES,
+    CODEC;
   }
 
   static final class FilesTableModel extends TableModelBase<FilesTableModel.Column> {
 
     enum Column implements TableColumnInfo {
-
       FILENAME("Filename", 0, String.class, 200),
       SIZE("Size", 1, String.class, Integer.MAX_VALUE);
 
@@ -506,7 +560,6 @@ public final class CommitsPanelProvider {
   static final class SegmentsTableModel extends TableModelBase<SegmentsTableModel.Column> {
 
     enum Column implements TableColumnInfo {
-
       NAME("Name", 0, String.class, 60),
       MAXDOCS("Max docs", 1, Integer.class, 60),
       DELS("Dels", 2, Integer.class, 60),
@@ -572,4 +625,3 @@ public final class CommitsPanelProvider {
     }
   }
 }
-
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/ComponentOperatorRegistry.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/ComponentOperatorRegistry.java
index 0d9c99b..40eb735 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/ComponentOperatorRegistry.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/ComponentOperatorRegistry.java
@@ -44,7 +44,5 @@ public class ComponentOperatorRegistry {
   }
 
   /** marker interface for operators */
-  public interface ComponentOperator {
-  }
-
+  public interface ComponentOperator {}
 }
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/DocumentsPanelProvider.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/DocumentsPanelProvider.java
index e9daece..85ca168 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/DocumentsPanelProvider.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/DocumentsPanelProvider.java
@@ -17,26 +17,6 @@
 
 package org.apache.lucene.luke.app.desktop.components;
 
-import javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JScrollPane;
-import javax.swing.JSpinner;
-import javax.swing.JSplitPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.ListSelectionModel;
-import javax.swing.SpinnerModel;
-import javax.swing.SpinnerNumberModel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.table.TableCellRenderer;
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Dimension;
@@ -57,7 +37,26 @@ import java.math.BigInteger;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
-
+import javax.swing.BorderFactory;
+import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
+import javax.swing.JSplitPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import javax.swing.SpinnerModel;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.TableCellRenderer;
 import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexOptions;
 import org.apache.lucene.index.Term;
@@ -152,26 +151,30 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     this.dvDialogFactory = DocValuesDialogFactory.getInstance();
     this.valueDialogFactory = StoredValueDialogFactory.getInstance();
     HelpDialogFactory helpDialogFactory = HelpDialogFactory.getInstance();
-    this.tableHeaderRenderer = new HelpHeaderRenderer(
-        "About Flags", "Format: IdfpoNPSB#txxVDtxxxxTx/x",
-        createFlagsHelpDialog(), helpDialogFactory);
+    this.tableHeaderRenderer =
+        new HelpHeaderRenderer(
+            "About Flags",
+            "Format: IdfpoNPSB#txxVDtxxxxTx/x",
+            createFlagsHelpDialog(),
+            helpDialogFactory);
 
     IndexHandler.getInstance().addObserver(new Observer());
     operatorRegistry.register(DocumentsTabOperator.class, this);
   }
 
   private JComponent createFlagsHelpDialog() {
-    String[] values = new String[]{
-        "I - index options(docs, frequencies, positions, offsets)",
-        "N - norms",
-        "P - payloads",
-        "S - stored",
-        "B - binary stored values",
-        "#txx - numeric stored values(type, precision)",
-        "V - term vectors",
-        "Dtxxxxx - doc values(type)",
-        "Tx/x - point values(num bytes/dimension)"
-    };
+    String[] values =
+        new String[] {
+          "I - index options(docs, frequencies, positions, offsets)",
+          "N - norms",
+          "P - payloads",
+          "S - stored",
+          "B - binary stored values",
+          "#txx - numeric stored values(type, precision)",
+          "V - term vectors",
+          "Dtxxxxx - doc values(type)",
+          "Tx/x - point values(num bytes/dimension)"
+        };
     JList<String> list = new JList<>(values);
     return new JScrollPane(list);
   }
@@ -181,7 +184,8 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     panel.setOpaque(false);
     panel.setBorder(BorderFactory.createLineBorder(Color.gray));
 
-    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, initUpperPanel(), initLowerPanel());
+    JSplitPane splitPane =
+        new JSplitPane(JSplitPane.VERTICAL_SPLIT, initUpperPanel(), initLowerPanel());
     splitPane.setOpaque(false);
     splitPane.setDividerLocation(0.4);
     panel.add(splitPane);
@@ -238,7 +242,9 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     c.gridwidth = 2;
     center.add(fieldsCombo, c);
 
-    firstTermBtn.setText(FontUtils.elegantIconHtml("&#x38;", MessageUtils.getLocalizedMessage("documents.button.first_term")));
+    firstTermBtn.setText(
+        FontUtils.elegantIconHtml(
+            "&#x38;", MessageUtils.getLocalizedMessage("documents.button.first_term")));
     firstTermBtn.setMaximumSize(new Dimension(80, 30));
     firstTermBtn.addActionListener(listeners::showFirstTerm);
     c.gridx = 0;
@@ -272,7 +278,8 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
     JPanel footer = new JPanel(new FlowLayout(FlowLayout.LEADING, 20, 5));
     footer.setOpaque(false);
-    JLabel hintLbl = new JLabel(MessageUtils.getLocalizedMessage("documents.label.browse_terms_hint"));
+    JLabel hintLbl =
+        new JLabel(MessageUtils.getLocalizedMessage("documents.label.browse_terms_hint"));
     footer.add(hintLbl);
     panel.add(footer, BorderLayout.PAGE_END);
 
@@ -289,7 +296,8 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     GridBagConstraints c = new GridBagConstraints();
     c.fill = GridBagConstraints.BOTH;
 
-    JLabel label = new JLabel(MessageUtils.getLocalizedMessage("documents.label.browse_doc_by_term"));
+    JLabel label =
+        new JLabel(MessageUtils.getLocalizedMessage("documents.label.browse_doc_by_term"));
     c.gridx = 0;
     c.gridy = 0;
     c.weightx = 0.0;
@@ -308,7 +316,9 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     c.insets = new Insets(5, 5, 5, 5);
     center.add(selectedTermTF, c);
 
-    firstTermDocBtn.setText(FontUtils.elegantIconHtml("&#x38;", MessageUtils.getLocalizedMessage("documents.button.first_termdoc")));
+    firstTermDocBtn.setText(
+        FontUtils.elegantIconHtml(
+            "&#x38;", MessageUtils.getLocalizedMessage("documents.button.first_termdoc")));
     firstTermDocBtn.addActionListener(listeners::showFirstTermDoc);
     c.gridx = 0;
     c.gridy = 2;
@@ -343,8 +353,14 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     c.insets = new Insets(5, 5, 5, 5);
     center.add(termDocsNumLbl, c);
 
-    TableUtils.setupTable(posTable, ListSelectionModel.SINGLE_SELECTION, new PosTableModel(), null,
-        PosTableModel.Column.POSITION.getColumnWidth(), PosTableModel.Column.OFFSETS.getColumnWidth(), PosTableModel.Column.PAYLOAD.getColumnWidth());
+    TableUtils.setupTable(
+        posTable,
+        ListSelectionModel.SINGLE_SELECTION,
+        new PosTableModel(),
+        null,
+        PosTableModel.Column.POSITION.getColumnWidth(),
+        PosTableModel.Column.OFFSETS.getColumnWidth(),
+        PosTableModel.Column.PAYLOAD.getColumnWidth());
     JScrollPane scrollPane = new JScrollPane(posTable);
     scrollPane.setMinimumSize(new Dimension(100, 100));
     c.gridx = 0;
@@ -370,17 +386,23 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
     JPanel browseDocsNote1 = new JPanel(new FlowLayout(FlowLayout.LEADING));
     browseDocsNote1.setOpaque(false);
-    browseDocsNote1.add(new JLabel(MessageUtils.getLocalizedMessage("documents.label.doc_table_note1")));
+    browseDocsNote1.add(
+        new JLabel(MessageUtils.getLocalizedMessage("documents.label.doc_table_note1")));
     browseDocsPanel.add(browseDocsNote1);
 
     JPanel browseDocsNote2 = new JPanel(new FlowLayout(FlowLayout.LEADING));
     browseDocsNote2.setOpaque(false);
-    browseDocsNote2.add(new JLabel(MessageUtils.getLocalizedMessage("documents.label.doc_table_note2")));
+    browseDocsNote2.add(
+        new JLabel(MessageUtils.getLocalizedMessage("documents.label.doc_table_note2")));
     browseDocsPanel.add(browseDocsNote2);
 
     panel.add(browseDocsPanel, BorderLayout.PAGE_START);
 
-    TableUtils.setupTable(documentTable, ListSelectionModel.MULTIPLE_INTERVAL_SELECTION, new DocumentsTableModel(), new MouseAdapter() {
+    TableUtils.setupTable(
+        documentTable,
+        ListSelectionModel.MULTIPLE_INTERVAL_SELECTION,
+        new DocumentsTableModel(),
+        new MouseAdapter() {
           @Override
           public void mouseClicked(MouseEvent e) {
             listeners.showDocumentContextMenu(e);
@@ -394,7 +416,10 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     flagsHeader.setOpaque(false);
     flagsHeader.add(new JLabel("Flags"));
     flagsHeader.add(new JLabel("Help"));
-    documentTable.getColumnModel().getColumn(DocumentsTableModel.Column.FLAGS.getIndex()).setHeaderValue(flagsHeader);
+    documentTable
+        .getColumnModel()
+        .getColumn(DocumentsTableModel.Column.FLAGS.getIndex())
+        .setHeaderValue(flagsHeader);
 
     JScrollPane scrollPane = new JScrollPane(documentTable);
     scrollPane.getHorizontalScrollBar().setAutoscrolls(false);
@@ -410,7 +435,10 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
     JPanel left = new JPanel(new FlowLayout(FlowLayout.LEADING, 10, 2));
     left.setOpaque(false);
-    JLabel label = new JLabel(FontUtils.elegantIconHtml("&#x68;", MessageUtils.getLocalizedMessage("documents.label.browse_doc_by_idx")));
+    JLabel label =
+        new JLabel(
+            FontUtils.elegantIconHtml(
+                "&#x68;", MessageUtils.getLocalizedMessage("documents.label.browse_doc_by_idx")));
     label.setHorizontalTextPosition(JLabel.LEFT);
     left.add(label);
     docNumSpnr.setPreferredSize(new Dimension(100, 25));
@@ -422,15 +450,21 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
     JPanel right = new JPanel(new FlowLayout(FlowLayout.TRAILING));
     right.setOpaque(false);
-    copyDocValuesBtn.setText(FontUtils.elegantIconHtml("&#xe0e6;", MessageUtils.getLocalizedMessage("documents.buttont.copy_values")));
+    copyDocValuesBtn.setText(
+        FontUtils.elegantIconHtml(
+            "&#xe0e6;", MessageUtils.getLocalizedMessage("documents.buttont.copy_values")));
     copyDocValuesBtn.setMargin(new Insets(5, 0, 5, 0));
     copyDocValuesBtn.addActionListener(listeners::copySelectedOrAllStoredValues);
     right.add(copyDocValuesBtn);
-    mltBtn.setText(FontUtils.elegantIconHtml("&#xe030;", MessageUtils.getLocalizedMessage("documents.button.mlt")));
+    mltBtn.setText(
+        FontUtils.elegantIconHtml(
+            "&#xe030;", MessageUtils.getLocalizedMessage("documents.button.mlt")));
     mltBtn.setMargin(new Insets(5, 0, 5, 0));
     mltBtn.addActionListener(listeners::mltSearch);
     right.add(mltBtn);
-    addDocBtn.setText(FontUtils.elegantIconHtml("&#x59;", MessageUtils.getLocalizedMessage("documents.button.add")));
+    addDocBtn.setText(
+        FontUtils.elegantIconHtml(
+            "&#x59;", MessageUtils.getLocalizedMessage("documents.button.add")));
     addDocBtn.setMargin(new Insets(5, 0, 5, 0));
     addDocBtn.addActionListener(listeners::showAddDocumentDialog);
     right.add(addDocBtn);
@@ -441,22 +475,26 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
   private void setUpDocumentContextMenu() {
     // show term vector
-    JMenuItem item1 = new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item1"));
+    JMenuItem item1 =
+        new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item1"));
     item1.addActionListener(listeners::showTermVectorDialog);
     documentContextMenu.add(item1);
 
     // show doc values
-    JMenuItem item2 = new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item2"));
+    JMenuItem item2 =
+        new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item2"));
     item2.addActionListener(listeners::showDocValuesDialog);
     documentContextMenu.add(item2);
 
     // show stored value
-    JMenuItem item3 = new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item3"));
+    JMenuItem item3 =
+        new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item3"));
     item3.addActionListener(listeners::showStoredValueDialog);
     documentContextMenu.add(item3);
 
     // copy stored value to clipboard
-    JMenuItem item4 = new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item4"));
+    JMenuItem item4 =
+        new JMenuItem(MessageUtils.getLocalizedMessage("documents.doctable.menu.item4"));
     item4.addActionListener(listeners::copyStoredValue);
     documentContextMenu.add(item4);
   }
@@ -466,7 +504,8 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
   private void showFirstTerm() {
     String fieldName = (String) fieldsCombo.getSelectedItem();
     if (fieldName == null || fieldName.length() == 0) {
-      messageBroker.showStatusMessage(MessageUtils.getLocalizedMessage("documents.field.message.not_selected"));
+      messageBroker.showStatusMessage(
+          MessageUtils.getLocalizedMessage("documents.field.message.not_selected"));
       return;
     }
 
@@ -542,9 +581,12 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     messageBroker.clearStatusMessage();
   }
 
-
   private void clearPosTable() {
-    TableUtils.setupTable(posTable, ListSelectionModel.SINGLE_SELECTION, new PosTableModel(), null,
+    TableUtils.setupTable(
+        posTable,
+        ListSelectionModel.SINGLE_SELECTION,
+        new PosTableModel(),
+        null,
         PosTableModel.Column.POSITION.getColumnWidth(),
         PosTableModel.Column.OFFSETS.getColumnWidth(),
         PosTableModel.Column.PAYLOAD.getColumnWidth());
@@ -555,7 +597,8 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     int docid = documentsModel.firstTermDoc().orElse(-1);
     if (docid < 0) {
       nextTermDocBtn.setEnabled(false);
-      messageBroker.showStatusMessage(MessageUtils.getLocalizedMessage("documents.termdocs.message.not_available"));
+      messageBroker.showStatusMessage(
+          MessageUtils.getLocalizedMessage("documents.termdocs.message.not_available"));
       return;
     }
     termDocIdxTF.setText(String.valueOf(1));
@@ -563,9 +606,18 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
     List<TermPosting> postings = documentsModel.getTermPositions();
     posTable.setModel(new PosTableModel(postings));
-    posTable.getColumnModel().getColumn(PosTableModel.Column.POSITION.getIndex()).setPreferredWidth(PosTableModel.Column.POSITION.getColumnWidth());
-    posTable.getColumnModel().getColumn(PosTableModel.Column.OFFSETS.getIndex()).setPreferredWidth(PosTableModel.Column.OFFSETS.getColumnWidth());
-    posTable.getColumnModel().getColumn(PosTableModel.Column.PAYLOAD.getIndex()).setPreferredWidth(PosTableModel.Column.PAYLOAD.getColumnWidth());
+    posTable
+        .getColumnModel()
+        .getColumn(PosTableModel.Column.POSITION.getIndex())
+        .setPreferredWidth(PosTableModel.Column.POSITION.getColumnWidth());
+    posTable
+        .getColumnModel()
+        .getColumn(PosTableModel.Column.OFFSETS.getIndex())
+        .setPreferredWidth(PosTableModel.Column.OFFSETS.getColumnWidth());
+    posTable
+        .getColumnModel()
+        .getColumn(PosTableModel.Column.PAYLOAD.getIndex())
+        .setPreferredWidth(PosTableModel.Column.PAYLOAD.getColumnWidth());
 
     nextTermDocBtn.setEnabled(true);
     messageBroker.clearStatusMessage();
@@ -575,7 +627,8 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
     int docid = documentsModel.nextTermDoc().orElse(-1);
     if (docid < 0) {
       nextTermDocBtn.setEnabled(false);
-      messageBroker.showStatusMessage(MessageUtils.getLocalizedMessage("documents.termdocs.message.not_available"));
+      messageBroker.showStatusMessage(
+          MessageUtils.getLocalizedMessage("documents.termdocs.message.not_available"));
       return;
     }
     int curIdx = Integer.parseInt(termDocIdxTF.getText());
@@ -596,75 +649,121 @@ public final class DocumentsPanelProvider implements DocumentsTabOperator {
 
   private void mltSearch() {
     int docNum = (int) docNumSpnr.getValue();
-    operatorRegistry.get(SearchTabOperator.class).ifPresent(operator -> {
-      operator.mltSearch(docNum);
-      tabSwitcher.switchTab(TabbedPaneProvider.Tab.SEARCH);
-    });
+    operatorRegistry
+        .get(SearchTabOperator.class)
+        .ifPresent(
+            operator -> {
+              operator.mltSearch(docNum);
+              tabSwitcher.switchTab(TabbedPaneProvider.Tab.SEARCH);
+            });
   }
 
   private void showAddDocumentDialog() {
-    new DialogOpener<>(addDocDialogFactory).open("Add document", 600, 500,
-        (factory) -> {
-        });
+    new DialogOpener<>(addDocDialogFactory).open("Add document", 600, 500, (factory) -> {});
   }
 
   private void showTermVectorDialog() {
     int docid = (Integer) docNumSpnr.getValue();
-    String field = (String) documentTable.getModel().getValueAt(documentTable.getSelectedRow(), DocumentsTableModel.Column.FIELD.getIndex());
+    String field =
+        (String)
+            documentTable
+                .getModel()
+                .getValueAt(
+                    documentTable.getSelectedRow(), DocumentsTableModel.Column.FIELD.getIndex());
     List<TermVectorEntry> tvEntries = documentsModel.getTermVectors(docid, field);
     if (tvEntries.isEmpty()) {
-      messageBroker.showStatusMessage(MessageUtils.getLocalizedMessage("documents.termvector.message.not_available", field, docid));
+      messageBroker.showStatusMessage(
+          MessageUtils.getLocalizedMessage(
+              "documents.termvector.message.not_available", field, docid));
       return;
     }
 
-    new DialogOpener<>(tvDialogFactory).open(
-        "Term Vector", 600, 400,
-        (factory) -> {
-          factory.setField(field);
-          factory.setTvEntries(tvEntries);
-        });
+    new DialogOpener<>(tvDialogFactory)
+        .open(
... 201562 lines suppressed ...