You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2022/03/02 13:26:18 UTC

[solr] branch branch_9_0 updated: SOLR-14920: Spotless formatting for core - test only (#711)

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

krisden pushed a commit to branch branch_9_0
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9_0 by this push:
     new 7d5625a  SOLR-14920: Spotless formatting for core - test only (#711)
7d5625a is described below

commit 7d5625a0e42436bae177ecf6256e11b146d19147
Author: Kevin Risden <ri...@users.noreply.github.com>
AuthorDate: Tue Mar 1 15:37:48 2022 -0500

    SOLR-14920: Spotless formatting for core - test only (#711)
---
 gradle/validation/spotless.gradle                  |    2 +-
 .../apache/solr/AnalysisAfterCoreReloadTest.java   |   92 +-
 .../org/apache/solr/BasicFunctionalityTest.java    | 1047 ++-
 .../test/org/apache/solr/ConvertedLegacyTest.java  | 1644 ++---
 .../src/test/org/apache/solr/CursorPagingTest.java | 1301 ++--
 .../org/apache/solr/DisMaxRequestHandlerTest.java  |  379 +-
 .../solr/DistributedIntervalFacetingTest.java      |   92 +-
 .../src/test/org/apache/solr/EchoParamsTest.java   |   56 +-
 .../apache/solr/HelloWorldSolrCloudTestCase.java   |   45 +-
 .../test/org/apache/solr/MinimalSchemaTest.java    |  146 +-
 .../src/test/org/apache/solr/OutputWriterTest.java |  130 +-
 solr/core/src/test/org/apache/solr/SampleTest.java |  113 +-
 .../src/test/org/apache/solr/SolrInfoBeanTest.java |   84 +-
 .../apache/solr/SolrTestCaseJ4DeleteCoreTest.java  |    7 +-
 .../test/org/apache/solr/SolrTestCaseJ4Test.java   |   40 +-
 .../test/org/apache/solr/TestCrossCoreJoin.java    |  166 +-
 .../solr/TestCursorMarkWithoutUniqueKey.java       |   36 +-
 .../org/apache/solr/TestDistributedGrouping.java   | 1781 ++++-
 .../apache/solr/TestDistributedMissingSort.java    | 1347 +++-
 .../org/apache/solr/TestDistributedSearch.java     | 1967 ++++--
 .../test/org/apache/solr/TestDocumentBuilder.java  |   19 +-
 .../test/org/apache/solr/TestGroupingSearch.java   | 1929 ++++--
 .../apache/solr/TestHighlightDedupGrouping.java    |   85 +-
 solr/core/src/test/org/apache/solr/TestJoin.java   |  347 +-
 .../test/org/apache/solr/TestRandomDVFaceting.java |  192 +-
 .../test/org/apache/solr/TestRandomFaceting.java   |  380 +-
 .../solr/TestSimpleTrackingShardHandler.java       |   20 +-
 .../org/apache/solr/TestSolrCoreProperties.java    |   50 +-
 .../test/org/apache/solr/TestTolerantSearch.java   |   93 +-
 solr/core/src/test/org/apache/solr/TestTrie.java   |  340 +-
 .../solr/analysis/CommonGramsPhraseQueryTest.java  |  104 +-
 .../PathHierarchyTokenizerFactoryTest.java         |  123 +-
 .../analysis/ProtectedTermFilterFactoryTest.java   |   54 +-
 .../org/apache/solr/analysis/TestCharFilters.java  |   63 +-
 .../solr/analysis/TestDeprecatedFilters.java       |    3 +-
 .../solr/analysis/TestLuceneMatchVersion.java      |   22 +-
 .../TestReversedWildcardFilterFactory.java         |  148 +-
 .../analysis/TestWordDelimiterFilterFactory.java   |  197 +-
 .../analysis/ThrowingMockTokenFilterFactory.java   |   19 +-
 .../apache/solr/analysis/TokenizerChainTest.java   |   12 +-
 .../TestEmbeddedSolrServerAdminHandler.java        |   55 +-
 .../TestEmbeddedSolrServerConstructors.java        |   14 +-
 .../embedded/TestEmbeddedSolrServerSchemaAPI.java  |   42 +-
 .../client/solrj/embedded/TestJettySolrRunner.java |   44 +-
 .../client/solrj/impl/ConnectionReuseTest.java     |   69 +-
 .../org/apache/solr/cloud/ActionThrottleTest.java  |   39 +-
 .../test/org/apache/solr/cloud/AddReplicaTest.java |   80 +-
 .../apache/solr/cloud/AliasIntegrationTest.java    |  587 +-
 .../cloud/AssignBackwardCompatibilityTest.java     |   49 +-
 .../apache/solr/cloud/BasicDistributedZk2Test.java |    7 +-
 .../apache/solr/cloud/BasicDistributedZkTest.java  |   11 +-
 .../solr/cloud/ChaosMonkeyNothingIsSafeTest.java   |    5 +-
 ...aosMonkeyNothingIsSafeWithPullReplicasTest.java |  191 +-
 .../solr/cloud/ChaosMonkeySafeLeaderTest.java      |    1 -
 .../ChaosMonkeySafeLeaderWithPullReplicasTest.java |  124 +-
 .../solr/cloud/ChaosMonkeyShardSplitTest.java      |   77 +-
 .../org/apache/solr/cloud/CleanupOldIndexTest.java |   37 +-
 .../cloud/CloudExitableDirectoryReaderTest.java    |  324 +-
 .../apache/solr/cloud/ClusterStateMockUtil.java    |  107 +-
 .../solr/cloud/ClusterStateMockUtilTest.java       |   51 +-
 .../org/apache/solr/cloud/ClusterStateTest.java    |   58 +-
 .../apache/solr/cloud/ClusterStateUpdateTest.java  |   79 +-
 .../org/apache/solr/cloud/CollectionPropsTest.java |  140 +-
 .../solr/cloud/CollectionStateZnodeTest.java       |   28 +-
 .../apache/solr/cloud/CollectionsAPISolrJTest.java |  919 ++-
 .../cloud/ConcurrentCreateRoutedAliasTest.java     |   95 +-
 .../apache/solr/cloud/ConfigSetApiLockingTest.java |   67 +-
 .../apache/solr/cloud/ConnectionManagerTest.java   |   51 +-
 .../solr/cloud/CreateCollectionCleanupTest.java    |  105 +-
 .../apache/solr/cloud/CreateRoutedAliasTest.java   |  393 +-
 .../solr/cloud/DeleteInactiveReplicaTest.java      |   64 +-
 .../cloud/DeleteLastCustomShardedReplicaTest.java  |   16 +-
 .../test/org/apache/solr/cloud/DeleteNodeTest.java |   42 +-
 .../org/apache/solr/cloud/DeleteReplicaTest.java   |  497 +-
 .../org/apache/solr/cloud/DeleteShardTest.java     |  103 +-
 .../org/apache/solr/cloud/DeleteStatusTest.java    |   50 +-
 .../apache/solr/cloud/DistribCursorPagingTest.java |  663 +-
 .../DistribDocExpirationUpdateProcessorTest.java   |  303 +-
 .../solr/cloud/DistribJoinFromCollectionTest.java  |  147 +-
 .../solr/cloud/DistributedApiAsyncTrackerTest.java |  232 +-
 .../apache/solr/cloud/DistributedQueueTest.java    |   65 +-
 .../solr/cloud/DistributedVersionInfoTest.java     |  275 +-
 .../apache/solr/cloud/DocValuesNotIndexedTest.java |  319 +-
 .../org/apache/solr/cloud/ForceLeaderTest.java     |  134 +-
 .../solr/cloud/FullSolrCloudDistribCmdsTest.java   |  585 +-
 .../solr/cloud/HttpPartitionOnCommitTest.java      |   68 +-
 .../org/apache/solr/cloud/HttpPartitionTest.java   |  311 +-
 .../cloud/HttpPartitionWithTlogReplicasTest.java   |    3 +-
 .../solr/cloud/LeaderElectionContextKeyTest.java   |   75 +-
 .../solr/cloud/LeaderElectionIntegrationTest.java  |   47 +-
 .../org/apache/solr/cloud/LeaderElectionTest.java  |  284 +-
 .../cloud/LeaderFailoverAfterPartitionTest.java    |  143 +-
 .../cloud/LeaderFailureAfterFreshStartTest.java    |   84 +-
 .../apache/solr/cloud/LeaderTragicEventTest.java   |  102 +-
 .../solr/cloud/LeaderVoteWaitTimeoutTest.java      |  156 +-
 .../org/apache/solr/cloud/MigrateRouteKeyTest.java |  100 +-
 .../solr/cloud/MissingSegmentRecoveryTest.java     |   31 +-
 .../cloud/MockScriptUpdateProcessorFactory.java    |   28 +-
 .../apache/solr/cloud/MockSimpleZkController.java  |   10 +-
 .../test/org/apache/solr/cloud/MockSolrSource.java |   16 +-
 .../org/apache/solr/cloud/MoveReplicaTest.java     |   10 +-
 .../solr/cloud/MultiSolrCloudTestCaseTest.java     |   21 +-
 .../apache/solr/cloud/MultiThreadedOCPTest.java    |  234 +-
 .../solr/cloud/NestedShardedAtomicUpdateTest.java  |  132 +-
 .../org/apache/solr/cloud/NodeMutatorTest.java     |   38 +-
 .../test/org/apache/solr/cloud/NodeRolesTest.java  |   64 +-
 .../OutOfBoxZkACLAndCredentialsProvidersTest.java  |   64 +-
 ...OverriddenZkACLAndCredentialsProvidersTest.java |  383 +-
 .../OverseerCollectionConfigSetProcessorTest.java  | 1116 ++--
 .../solr/cloud/OverseerModifyCollectionTest.java   |   29 +-
 .../org/apache/solr/cloud/OverseerRolesTest.java   |   86 +-
 .../solr/cloud/OverseerSolrResponseTest.java       |   39 +-
 ...verseerSolrResponseUnsafeSerializationTest.java |   23 +-
 .../org/apache/solr/cloud/OverseerStatusTest.java  |   83 +-
 .../apache/solr/cloud/OverseerTaskQueueTest.java   |   14 +-
 .../test/org/apache/solr/cloud/OverseerTest.java   | 1359 ++--
 .../apache/solr/cloud/PackageManagerCLITest.java   |  103 +-
 .../apache/solr/cloud/PeerSyncReplicationTest.java |  116 +-
 .../solr/cloud/RecoveryAfterSoftCommitTest.java    |   36 +-
 .../test/org/apache/solr/cloud/RecoveryZkTest.java |    2 -
 .../apache/solr/cloud/ReindexCollectionTest.java   |  268 +-
 .../apache/solr/cloud/RemoteQueryErrorTest.java    |   28 +-
 .../org/apache/solr/cloud/ReplaceNodeTest.java     |  161 +-
 .../apache/solr/cloud/ReplicationFactorTest.java   |  224 +-
 .../solr/cloud/RestartWhileUpdatingTest.java       |    3 +-
 .../org/apache/solr/cloud/RollingRestartTest.java  |   73 +-
 .../test/org/apache/solr/cloud/RouteFieldTest.java |   60 +-
 .../org/apache/solr/cloud/SSLMigrationTest.java    |   98 +-
 .../solr/cloud/SegmentTerminateEarlyTestState.java |  234 +-
 .../apache/solr/cloud/ShardRoutingCustomTest.java  |   33 +-
 .../org/apache/solr/cloud/ShardRoutingTest.java    |  247 +-
 .../test/org/apache/solr/cloud/ShardTermsTest.java |    7 +-
 .../test/org/apache/solr/cloud/SliceStateTest.java |   11 +-
 .../org/apache/solr/cloud/SolrCLIZkUtilsTest.java  | 1021 +--
 .../apache/solr/cloud/SolrCloudExampleTest.java    |  177 +-
 .../org/apache/solr/cloud/SolrXmlInZkTest.java     |   74 +-
 .../test/org/apache/solr/cloud/SplitShardTest.java |  208 +-
 .../test/org/apache/solr/cloud/SyncSliceTest.java  |    8 +-
 .../solr/cloud/SystemCollectionCompatTest.java     |   87 +-
 .../solr/cloud/TestAuthenticationFramework.java    |   70 +-
 .../apache/solr/cloud/TestBaseStatsCacheCloud.java |  181 +-
 .../apache/solr/cloud/TestCloudConsistency.java    |  210 +-
 .../apache/solr/cloud/TestCloudDeleteByQuery.java  |  130 +-
 .../apache/solr/cloud/TestCloudInspectUtil.java    |   74 +-
 .../TestCloudPhrasesIdentificationComponent.java   |   95 +-
 .../org/apache/solr/cloud/TestCloudPivotFacet.java |  397 +-
 .../solr/cloud/TestCloudPseudoReturnFields.java    |  633 +-
 .../org/apache/solr/cloud/TestCloudRecovery.java   |   84 +-
 .../org/apache/solr/cloud/TestCloudRecovery2.java  |  110 +-
 .../solr/cloud/TestCloudSearcherWarming.java       |  201 +-
 .../apache/solr/cloud/TestClusterProperties.java   |    7 +-
 .../org/apache/solr/cloud/TestConfigSetsAPI.java   | 1171 +++-
 .../solr/cloud/TestConfigSetsAPIExclusivity.java   |   42 +-
 .../solr/cloud/TestConfigSetsAPIShareSchema.java   |   32 +-
 .../solr/cloud/TestConfigSetsAPIZkFailure.java     |   99 +-
 .../cloud/TestDeleteCollectionOnDownNodes.java     |   23 +-
 .../solr/cloud/TestDistribDocBasedVersion.java     |  134 +-
 .../org/apache/solr/cloud/TestDistributedMap.java  |   66 +-
 .../solr/cloud/TestDownShardTolerantSearch.java    |   46 +-
 .../cloud/TestDynamicFieldNamesIndexCorrectly.java | 1369 ++--
 .../solr/cloud/TestExactSharedStatsCacheCloud.java |    4 +-
 .../solr/cloud/TestExactStatsCacheCloud.java       |    4 +-
 .../cloud/TestExclusionRuleCollectionAccess.java   |   20 +-
 .../org/apache/solr/cloud/TestHashPartitioner.java |  187 +-
 .../apache/solr/cloud/TestLRUStatsCacheCloud.java  |    7 +-
 .../org/apache/solr/cloud/TestLazySolrCluster.java |  121 +-
 .../cloud/TestLeaderElectionWithEmptyReplica.java  |   49 +-
 .../solr/cloud/TestLeaderElectionZkExpiry.java     |   44 +-
 .../solr/cloud/TestLocalStatsCacheCloud.java       |   10 +-
 .../test/org/apache/solr/cloud/TestLockTree.java   |   60 +-
 .../solr/cloud/TestMiniSolrCloudClusterSSL.java    |  293 +-
 .../solr/cloud/TestOnReconnectListenerSupport.java |   52 +-
 .../org/apache/solr/cloud/TestPrepRecovery.java    |   55 +-
 .../org/apache/solr/cloud/TestPullReplica.java     |  528 +-
 .../solr/cloud/TestPullReplicaErrorHandling.java   |  188 +-
 .../apache/solr/cloud/TestPullReplicaWithAuth.java |  102 +-
 .../solr/cloud/TestQueryingOnDownCollection.java   |  111 +-
 .../test/org/apache/solr/cloud/TestRSAKeyPair.java |   58 +-
 .../apache/solr/cloud/TestRandomFlRTGCloud.java    |  960 +--
 .../solr/cloud/TestRandomRequestDistribution.java  |  108 +-
 .../apache/solr/cloud/TestRebalanceLeaders.java    |  418 +-
 .../apache/solr/cloud/TestRequestForwarding.java   |   18 +-
 .../apache/solr/cloud/TestSSLRandomization.java    |  214 +-
 .../org/apache/solr/cloud/TestSegmentSorting.java  |  112 +-
 .../solr/cloud/TestShortCircuitedRequests.java     |   34 +-
 .../solr/cloud/TestSizeLimitedDistributedMap.java  |   20 +-
 .../solr/cloud/TestSkipOverseerOperations.java     |  203 +-
 .../cloud/TestStressCloudBlindAtomicUpdates.java   |  310 +-
 .../solr/cloud/TestStressInPlaceUpdates.java       |  737 ++-
 .../org/apache/solr/cloud/TestStressLiveNodes.java |  134 +-
 .../solr/cloud/TestTlogReplayVsRecovery.java       |  180 +-
 .../org/apache/solr/cloud/TestTlogReplica.java     |  670 +-
 .../cloud/TestTolerantUpdateProcessorCloud.java    | 1212 ++--
 .../TestTolerantUpdateProcessorRandomCloud.java    |  245 +-
 .../cloud/TestWaitForStateWithJettyShutdowns.java  |  113 +-
 .../cloud/TlogReplayBufferedWhileIndexingTest.java |    4 +-
 .../solr/cloud/TriLevelCompositeIdRoutingTest.java |   69 +-
 .../solr/cloud/TrollingIndexReaderFactory.java     |  218 +-
 .../apache/solr/cloud/UnloadDistributedZkTest.java |    8 +-
 .../VMParamsZkACLAndCredentialsProvidersTest.java  |    5 +-
 .../src/test/org/apache/solr/cloud/ZkCLITest.java  |  274 +-
 .../org/apache/solr/cloud/ZkControllerTest.java    |  247 +-
 .../apache/solr/cloud/ZkDistributedLockTest.java   |  203 +-
 .../test/org/apache/solr/cloud/ZkFailoverTest.java |   27 +-
 .../org/apache/solr/cloud/ZkNodePropsTest.java     |    7 +-
 .../org/apache/solr/cloud/ZkShardTermsTest.java    |   72 +-
 .../org/apache/solr/cloud/ZkSolrClientTest.java    |  280 +-
 .../AsyncCallRequestStatusResponseTest.java        |   54 +-
 .../BackupRestoreApiErrorConditionsTest.java       |  230 +-
 .../api/collections/CollectionApiLockingTest.java  |  138 +-
 .../api/collections/CollectionReloadTest.java      |   57 +-
 .../collections/CollectionTooManyReplicasTest.java |  214 +-
 .../CollectionsAPIAsyncDistributedZkTest.java      |  214 +-
 .../CollectionsAPIDistributedZkTest.java           |    4 +-
 .../ConcurrentDeleteAndCreateCollectionTest.java   |   86 +-
 .../api/collections/CustomCollectionTest.java      |  193 +-
 .../LocalFSCloudIncrementalBackupTest.java         |  114 +-
 .../solr/cloud/api/collections/PurgeGraphTest.java |  349 +-
 .../api/collections/ReplicaPropertiesBase.java     |   88 +-
 .../solr/cloud/api/collections/ShardSplitTest.java |  806 ++-
 .../SimpleCollectionCreateDeleteTest.java          |  323 +-
 .../cloud/api/collections/SplitByPrefixTest.java   |  173 +-
 .../cloud/api/collections/TestCollectionAPI.java   |  604 +-
 .../TestCollectionsAPIViaSolrCloudCluster.java     |   55 +-
 .../collections/TestLocalFSCloudBackupRestore.java |   87 +-
 .../api/collections/TestReplicaProperties.java     |  241 +-
 .../TestRequestStatusCollectionAPI.java            |   59 +-
 .../cloud/overseer/TestClusterStateMutator.java    |   42 +-
 .../overseer/ZkCollectionPropsCachingTest.java     |   37 +-
 .../solr/cloud/overseer/ZkStateReaderTest.java     |   41 +-
 .../solr/cloud/overseer/ZkStateWriterTest.java     |   81 +-
 .../solr/cluster/events/AllEventsListener.java     |   11 +-
 .../cluster/events/ClusterEventProducerTest.java   |  242 +-
 .../impl/CollectionsRepairEventListenerTest.java   |   47 +-
 .../cluster/placement/AttributeFetcherForTest.java |    6 +-
 .../apache/solr/cluster/placement/Builders.java    |  254 +-
 .../solr/cluster/placement/BuildersTest.java       |   93 +-
 .../placement/ClusterAbstractionsForTest.java      |   65 +-
 .../impl/PlacementPluginIntegrationTest.java       |  335 +-
 .../impl/SimpleClusterAbstractionsTest.java        |   40 +-
 .../plugins/AffinityPlacementFactoryTest.java      |  738 ++-
 .../solr/common/cloud/ZkDynamicConfigTest.java     |   23 +-
 .../solr/common/cloud/ZkStateReaderAccessor.java   |    6 +-
 .../solr/common/util/TestObjectReleaseTracker.java |   96 +-
 .../apache/solr/core/AlternateDirectoryTest.java   |   29 +-
 .../apache/solr/core/BlobRepositoryCloudTest.java  |   49 +-
 .../solr/core/BlobRepositoryMockingTest.java       |  154 +-
 .../solr/core/ByteBuffersDirectoryFactoryTest.java |   43 +-
 .../solr/core/ConfigureRecoveryStrategyTest.java   |   37 +-
 .../test/org/apache/solr/core/CoreSorterTest.java  |  126 +-
 .../solr/core/CountUsageValueSourceParser.java     |   37 +-
 .../apache/solr/core/DirectoryFactoriesTest.java   |   53 +-
 .../org/apache/solr/core/DirectoryFactoryTest.java |   36 +-
 .../apache/solr/core/DummyValueSourceParser.java   |   32 +-
 .../solr/core/ExitableDirectoryReaderTest.java     |  119 +-
 .../org/apache/solr/core/FakeDeletionPolicy.java   |    9 +-
 .../src/test/org/apache/solr/core/HelloStream.java |   22 +-
 .../org/apache/solr/core/MockEventListener.java    |   11 +-
 .../apache/solr/core/MockShardHandlerFactory.java  |    7 +-
 .../test/org/apache/solr/core/PluginInfoTest.java  |   98 +-
 .../org/apache/solr/core/QueryResultKeyTest.java   |   92 +-
 .../apache/solr/core/RAMDirectoryFactoryTest.java  |   34 +-
 .../org/apache/solr/core/RequestHandlersTest.java  |  115 +-
 .../org/apache/solr/core/ResourceLoaderTest.java   |  155 +-
 .../src/test/org/apache/solr/core/SOLR749Test.java |  130 +-
 .../solr/core/SolrCoreCheckLockOnStartupTest.java  |   45 +-
 .../test/org/apache/solr/core/SolrCoreTest.java    |  285 +-
 .../solr/core/TestBackupRepositoryFactory.java     |   19 +-
 .../test/org/apache/solr/core/TestBadConfig.java   |   32 +-
 .../org/apache/solr/core/TestCodecSupport.java     |  161 +-
 .../org/apache/solr/core/TestConfLoadPerf.java     |   60 +-
 .../src/test/org/apache/solr/core/TestConfig.java  |  229 +-
 .../org/apache/solr/core/TestConfigOverlay.java    |   29 +-
 .../apache/solr/core/TestConfigSetImmutable.java   |   55 +-
 .../apache/solr/core/TestConfigSetProperties.java  |   25 +-
 .../test/org/apache/solr/core/TestConfigSets.java  |   82 +-
 .../org/apache/solr/core/TestCoreContainer.java    |  424 +-
 .../org/apache/solr/core/TestCoreDiscovery.java    |  318 +-
 .../apache/solr/core/TestCorePropertiesReload.java |   12 +-
 .../org/apache/solr/core/TestCustomStream.java     |   28 +-
 .../solr/core/TestImplicitCoreProperties.java      |   37 +-
 .../apache/solr/core/TestInfoStreamLogging.java    |    4 +-
 .../test/org/apache/solr/core/TestInitParams.java  |   55 +-
 .../org/apache/solr/core/TestJmxIntegration.java   |   95 +-
 .../test/org/apache/solr/core/TestLazyCores.java   |  596 +-
 .../apache/solr/core/TestMergePolicyConfig.java    |  127 +-
 .../org/apache/solr/core/TestMinimalConfig.java    |    8 +-
 .../src/test/org/apache/solr/core/TestNRTOpen.java |   33 +-
 .../apache/solr/core/TestQuerySenderListener.java  |   78 +-
 .../apache/solr/core/TestQuerySenderNoQuery.java   |   53 +-
 .../apache/solr/core/TestReloadAndDeleteDocs.java  |    9 +-
 .../apache/solr/core/TestShardHandlerFactory.java  |    8 +-
 .../org/apache/solr/core/TestSimpleTextCodec.java  |   31 +-
 .../apache/solr/core/TestSolrConfigHandler.java    |  839 +--
 .../apache/solr/core/TestSolrDeletionPolicy1.java  |   82 +-
 .../apache/solr/core/TestSolrDeletionPolicy2.java  |   24 +-
 .../org/apache/solr/core/TestSolrIndexConfig.java  |   18 +-
 .../src/test/org/apache/solr/core/TestSolrXml.java |  250 +-
 .../org/apache/solr/core/TestXIncludeConfig.java   |   39 +-
 .../solr/core/backup/BackupFilePathsTest.java      |   96 +-
 .../org/apache/solr/core/backup/BackupIdTest.java  |   50 +-
 .../apache/solr/core/backup/ShardBackupIdTest.java |   42 +-
 .../core/snapshots/TestSolrCloudSnapshots.java     |  155 +-
 .../solr/core/snapshots/TestSolrCoreSnapshots.java |  131 +-
 .../solr/filestore/TestDistribPackageStore.java    |  263 +-
 .../handler/AnalysisRequestHandlerTestBase.java    |   29 +-
 .../handler/BinaryUpdateRequestHandlerTest.java    |    7 +-
 .../apache/solr/handler/CSVRequestHandlerTest.java |    7 +-
 .../DocumentAnalysisRequestHandlerTest.java        |  300 +-
 .../handler/FieldAnalysisRequestHandlerTest.java   |  579 +-
 .../org/apache/solr/handler/JsonLoaderTest.java    |  865 +--
 .../solr/handler/MoreLikeThisHandlerTest.java      |  196 +-
 .../solr/handler/PingRequestHandlerTest.java       |  106 +-
 .../apache/solr/handler/ReplicationTestHelper.java |  505 +-
 .../apache/solr/handler/RequestLoggingTest.java    |   16 +-
 .../org/apache/solr/handler/SearchHandlerTest.java |   73 +-
 .../org/apache/solr/handler/TestBlobHandler.java   |   75 +-
 .../org/apache/solr/handler/TestCSVLoader.java     |  324 +-
 .../org/apache/solr/handler/TestConfigReload.java  |   54 +-
 .../apache/solr/handler/TestContainerPlugin.java   |  417 +-
 .../handler/TestHealthCheckHandlerLegacyMode.java  |  360 +-
 .../solr/handler/TestIncrementalCoreBackup.java    |  729 +-
 .../solr/handler/TestReplicationHandler.java       |  786 ++-
 .../solr/handler/TestReplicationHandlerBackup.java |  130 +-
 .../TestReplicationHandlerDiskOverFlow.java        |  223 +-
 .../org/apache/solr/handler/TestReqParamsAPI.java  |  344 +-
 .../org/apache/solr/handler/TestRequestId.java     |   50 +-
 .../org/apache/solr/handler/TestRestoreCore.java   |  120 +-
 .../solr/handler/TestSampleDocumentsLoader.java    |   23 +-
 .../solr/handler/TestSnapshotCoreBackup.java       |  411 +-
 .../solr/handler/TestSolrConfigHandlerCloud.java   |  312 +-
 .../handler/TestSolrConfigHandlerConcurrent.java   |  111 +-
 .../solr/handler/TestStressIncrementalBackup.java  |  266 +-
 .../solr/handler/TestStressThreadBackup.java       |  306 +-
 .../solr/handler/TestSystemCollAutoCreate.java     |    8 +-
 .../handler/ThrowErrorOnInitRequestHandler.java    |   11 +-
 .../apache/solr/handler/V2ApiIntegrationTest.java  |  138 +-
 .../solr/handler/V2ClusterAPIMappingTest.java      |  137 +-
 .../org/apache/solr/handler/V2StandaloneTest.java  |   11 +-
 .../solr/handler/XmlUpdateRequestHandlerTest.java  |  310 +-
 .../solr/handler/admin/AdminHandlersProxyTest.java |   57 +-
 .../handler/admin/CoreAdminCreateDiscoverTest.java |  218 +-
 .../solr/handler/admin/CoreAdminHandlerTest.java   |  374 +-
 .../solr/handler/admin/CoreAdminOperationTest.java |  264 +-
 .../handler/admin/CoreAdminRequestStatusTest.java  |   65 +-
 .../admin/CoreMergeIndexesAdminHandlerTest.java    |   47 +-
 .../solr/handler/admin/DaemonStreamApiTest.java    |  159 +-
 .../solr/handler/admin/HealthCheckHandlerTest.java |  134 +-
 .../solr/handler/admin/IndexSizeEstimatorTest.java |  109 +-
 .../apache/solr/handler/admin/InfoHandlerTest.java |   53 +-
 .../solr/handler/admin/LoggingHandlerTest.java     |   54 +-
 .../solr/handler/admin/LukeRequestHandlerTest.java |  228 +-
 .../solr/handler/admin/MBeansHandlerTest.java      |  224 +-
 .../solr/handler/admin/MetricsHandlerTest.java     |  510 +-
 .../admin/PropertiesRequestHandlerTest.java        |   17 +-
 .../admin/SecurityConfHandlerLocalForTesting.java  |    7 +-
 .../handler/admin/SecurityConfHandlerTest.java     |  184 +-
 .../admin/SegmentsInfoRequestHandlerTest.java      |  141 +-
 .../handler/admin/ShowFileRequestHandlerTest.java  |  108 +-
 .../solr/handler/admin/SolrEnvironmentTest.java    |    6 +-
 .../solr/handler/admin/SplitHandlerTest.java       |  137 +-
 .../solr/handler/admin/StatsReloadRaceTest.java    |   72 +-
 .../solr/handler/admin/SystemInfoHandlerTest.java  |   21 +-
 .../solr/handler/admin/TestApiFramework.java       |  281 +-
 .../solr/handler/admin/TestCollectionAPIs.java     |  403 +-
 .../apache/solr/handler/admin/TestConfigsApi.java  |   41 +-
 .../solr/handler/admin/TestCoreAdminApis.java      |  115 +-
 .../solr/handler/admin/ThreadDumpHandlerTest.java  |  282 +-
 .../admin/V2CollectionBackupsAPIMappingTest.java   |  101 +-
 .../handler/admin/V2CollectionsAPIMappingTest.java |  482 +-
 .../solr/handler/admin/V2CoresAPIMappingTest.java  |  317 +-
 .../solr/handler/admin/ZookeeperReadAPITest.java   |   45 +-
 .../admin/ZookeeperStatusHandlerFailureTest.java   |   35 +-
 .../handler/admin/ZookeeperStatusHandlerTest.java  |  254 +-
 .../admin/api/V2CollectionAPIMappingTest.java      |  293 +-
 .../handler/admin/api/V2NodeAPIMappingTest.java    |  476 +-
 .../handler/admin/api/V2ShardsAPIMappingTest.java  |  468 +-
 .../solr/handler/admin/api/package-info.java       |    6 +-
 .../solr/handler/component/BadComponentTest.java   |    8 +-
 .../handler/component/CloudReplicaSourceTest.java  |  215 +-
 .../component/CustomHighlightComponentTest.java    |  168 +-
 .../solr/handler/component/DebugComponentTest.java |  296 +-
 .../component/DistributedDebugComponentTest.java   |  189 +-
 .../component/DistributedExpandComponentTest.java  |  376 +-
 .../component/DistributedFacetExistsSmallTest.java |  122 +-
 .../component/DistributedFacetPivotLargeTest.java  | 1399 ++--
 .../DistributedFacetPivotLongTailTest.java         |  191 +-
 .../DistributedFacetPivotSmallAdvancedTest.java    |  251 +-
 .../component/DistributedFacetPivotSmallTest.java  | 2632 +++++---
 .../DistributedFacetPivotWhiteBoxTest.java         |  177 +-
 .../component/DistributedMLTComponentTest.java     |  329 +-
 .../DistributedQueryComponentCustomSortTest.java   |  212 +-
 .../DistributedQueryComponentOptimizationTest.java |  658 +-
 .../DistributedQueryElevationComponentTest.java    |  132 +-
 .../DistributedSpellCheckComponentTest.java        |  330 +-
 .../component/DistributedSuggestComponentTest.java |   90 +-
 .../component/DistributedTermsComponentTest.java   |  170 +-
 .../component/FacetPivot2CollectionsTest.java      |  307 +-
 .../handler/component/FacetPivotSmallTest.java     |  800 ++-
 .../handler/component/InfixSuggestersTest.java     |  128 +-
 .../handler/component/MockResponseBuilder.java     |   60 +-
 .../solr/handler/component/MockShardRequest.java   |   52 +-
 .../handler/component/MockSortSpecBuilder.java     |   51 +-
 .../component/MoreLikeThisComponentTest.java       |  305 +-
 .../PhrasesIdentificationComponentTest.java        |  982 +--
 .../QueryComponentPartialResultsTest.java          |  177 +-
 .../component/QueryElevationComponentTest.java     | 1210 ++--
 .../component/ResourceSharingTestComponent.java    |   45 +-
 .../handler/component/ResponseBuilderTest.java     |    5 +-
 .../component/ResponseLogComponentTest.java        |   60 +-
 .../solr/handler/component/SearchHandlerTest.java  |  147 +-
 .../solr/handler/component/ShardRequestTest.java   |    5 +-
 .../handler/component/ShardsAllowListTest.java     |  173 +-
 .../handler/component/SpellCheckComponentTest.java |  623 +-
 .../solr/handler/component/StatsComponentTest.java | 2675 ++++----
 .../SuggestComponentContextFilterQueryTest.java    |  449 +-
 .../handler/component/SuggestComponentTest.java    |  998 ++-
 .../TermVectorComponentDistributedTest.java        |  394 +-
 .../handler/component/TermVectorComponentTest.java |  600 +-
 .../solr/handler/component/TermsComponentTest.java |  846 ++-
 .../TestDistributedStatsComponentCardinality.java  |  256 +-
 .../handler/component/TestExpandComponent.java     | 1143 +++-
 .../component/TestHttpShardHandlerFactory.java     |   81 +-
 .../handler/component/TestPivotHelperCode.java     |   46 +-
 .../component/TestTrackingShardHandlerFactory.java |   53 +-
 .../solr/handler/component/UpdateLogCloudTest.java |   73 +-
 .../handler/designer/ManagedSchemaDiffTest.java    |   25 +-
 .../handler/designer/TestSchemaDesignerAPI.java    |  192 +-
 .../TestSchemaDesignerConfigSetHelper.java         |  149 +-
 .../designer/TestSchemaDesignerSettingsDAO.java    |   83 +-
 .../solr/handler/export/TestExportWriter.java      | 1516 +++--
 .../solr/handler/loader/JavabinLoaderTest.java     |   55 +-
 .../tagger/EmbeddedSolrNoSerializeTest.java        |   50 +-
 .../solr/handler/tagger/RandomizedTaggerTest.java  |   64 +-
 .../apache/solr/handler/tagger/Tagger2Test.java    |  121 +-
 .../org/apache/solr/handler/tagger/TaggerTest.java |  277 +-
 .../apache/solr/handler/tagger/TaggerTestCase.java |   98 +-
 .../solr/handler/tagger/TaggingAttributeTest.java  |   54 +-
 .../handler/tagger/WordLengthTaggingFilter.java    |   50 +-
 .../tagger/WordLengthTaggingFilterFactory.java     |    9 +-
 .../solr/handler/tagger/XmlInterpolationTest.java  |   57 +-
 .../apache/solr/highlight/DummyHighlighter.java    |    8 +-
 .../solr/highlight/FastVectorHighlighterTest.java  |   63 +-
 .../solr/highlight/HighlighterConfigTest.java      |   23 +-
 .../solr/highlight/HighlighterMaxOffsetTest.java   |   71 +-
 .../org/apache/solr/highlight/HighlighterTest.java | 1410 ++--
 .../highlight/HighlighterWithoutStoredIdTest.java  |    1 -
 .../solr/highlight/TestUnifiedSolrHighlighter.java |  458 +-
 .../TestUnifiedSolrHighlighterWithoutStoredId.java |    3 +-
 .../apache/solr/index/DummyMergePolicyFactory.java |    9 +-
 .../solr/index/TestSlowCompositeReaderWrapper.java |   35 +-
 .../solr/index/WrapperMergePolicyFactoryTest.java  |   64 +-
 .../apache/solr/internal/csv/CSVParserTest.java    |  489 +-
 .../apache/solr/internal/csv/CSVPrinterTest.java   |   94 +-
 .../apache/solr/internal/csv/CSVStrategyTest.java  |   24 +-
 .../org/apache/solr/internal/csv/CSVUtilsTest.java |  224 +-
 .../apache/solr/internal/csv/CharBufferTest.java   |  312 +-
 .../internal/csv/ExtendedBufferedReaderTest.java   |   72 +-
 .../org/apache/solr/legacy/TestLegacyField.java    |  161 +-
 .../apache/solr/legacy/TestLegacyFieldReuse.java   |   16 +-
 .../apache/solr/legacy/TestLegacyNumericUtils.java |  857 ++-
 .../org/apache/solr/legacy/TestLegacyTerms.java    |   85 +-
 .../legacy/TestMultiValuedNumericRangeQuery.java   |   53 +-
 .../solr/legacy/TestNumericRangeQuery32.java       |  405 +-
 .../solr/legacy/TestNumericRangeQuery64.java       |  414 +-
 .../apache/solr/legacy/TestNumericTokenStream.java |  133 +-
 .../org/apache/solr/logging/TestLogWatcher.java    |   19 +-
 .../org/apache/solr/metrics/JvmMetricsTest.java    |  110 +-
 .../org/apache/solr/metrics/MetricsConfigTest.java |   51 +-
 .../solr/metrics/MetricsDisabledCloudTest.java     |   42 +-
 .../apache/solr/metrics/MockCounterSupplier.java   |    4 +-
 .../apache/solr/metrics/MockHistogramSupplier.java |    7 +-
 .../org/apache/solr/metrics/MockMeterSupplier.java |    4 +-
 .../org/apache/solr/metrics/MockTimerSupplier.java |    4 +-
 .../solr/metrics/SolrCoreMetricManagerTest.java    |   60 +-
 .../apache/solr/metrics/SolrMetricManagerTest.java |   97 +-
 .../solr/metrics/SolrMetricReporterTest.java       |    1 -
 .../apache/solr/metrics/SolrMetricTestUtils.java   |   49 +-
 .../solr/metrics/SolrMetricsIntegrationTest.java   |   98 +-
 .../solr/metrics/reporters/MockMetricReporter.java |   20 +-
 .../reporters/SolrGraphiteReporterTest.java        |   29 +-
 .../reporters/SolrJmxReporterCloudTest.java        |   88 +-
 .../metrics/reporters/SolrJmxReporterTest.java     |  192 +-
 .../metrics/reporters/SolrSlf4jReporterTest.java   |   27 +-
 .../solr/parser/SolrQueryParserBaseTest.java       |  191 +-
 .../src/test/org/apache/solr/pkg/TestPackages.java | 1334 ++--
 .../solr/request/RegexBytesRefFilterTest.java      |    1 -
 .../org/apache/solr/request/SimpleFacetsTest.java  | 6995 ++++++++++++--------
 .../solr/request/SubstringBytesRefFilterTest.java  |    6 +-
 .../org/apache/solr/request/TestFacetMethods.java  |  184 +-
 .../test/org/apache/solr/request/TestFaceting.java | 1700 +++--
 .../apache/solr/request/TestIntervalFaceting.java  | 1034 ++-
 .../apache/solr/request/TestRemoteStreaming.java   |   40 +-
 .../apache/solr/request/TestSolrRequestInfo.java   |   91 +-
 .../org/apache/solr/request/TestStreamBody.java    |   71 +-
 .../solr/request/TestUnInvertedFieldException.java |   37 +-
 .../org/apache/solr/request/TestWriterPerf.java    |  220 +-
 .../solr/request/macro/TestMacroExpander.java      |   66 +-
 .../org/apache/solr/request/macro/TestMacros.java  |   86 +-
 .../org/apache/solr/response/JSONWriterTest.java   |  130 +-
 .../org/apache/solr/response/SmileWriterTest.java  |   80 +-
 .../solr/response/TestBinaryResponseWriter.java    |   50 +-
 .../solr/response/TestCSVResponseWriter.java       |  462 +-
 .../solr/response/TestCustomDocTransformer.java    |   41 +-
 .../solr/response/TestGeoJSONResponseWriter.java   |  301 +-
 .../solr/response/TestGraphMLResponseWriter.java   |   79 +-
 .../response/TestJavabinTupleStreamParser.java     |  149 +-
 .../response/TestPHPSerializedResponseWriter.java  |   47 +-
 .../org/apache/solr/response/TestPushWriter.java   |   92 +-
 .../solr/response/TestRawResponseWriter.java       |   70 +-
 .../apache/solr/response/TestRawTransformer.java   |  212 +-
 .../solr/response/TestRetrieveFieldsOptimizer.java |  187 +-
 .../solr/response/TestSolrQueryResponse.java       |   84 +-
 .../transform/TestChildDocTransformer.java         |  864 ++-
 .../TestChildDocTransformerHierarchy.java          |  639 +-
 .../transform/TestExplainDocTransformer.java       |  101 +-
 .../transform/TestSubQueryTransformer.java         | 1231 ++--
 .../TestSubQueryTransformerCrossCore.java          |  244 +-
 .../transform/TestSubQueryTransformerDistrib.java  |  335 +-
 .../org/apache/solr/rest/SolrRestletTestBase.java  |   27 +-
 .../org/apache/solr/rest/TestManagedResource.java  |  172 +-
 .../solr/rest/TestManagedResourceStorage.java      |   75 +-
 .../test/org/apache/solr/rest/TestRestManager.java |  101 +-
 .../apache/solr/rest/schema/TestBulkSchemaAPI.java | 1183 ++--
 .../schema/TestCopyFieldCollectionResource.java    |  130 +-
 .../schema/TestDynamicFieldCollectionResource.java |   48 +-
 .../solr/rest/schema/TestDynamicFieldResource.java |   82 +-
 .../rest/schema/TestFieldCollectionResource.java   |   61 +-
 .../apache/solr/rest/schema/TestFieldResource.java |  110 +-
 .../schema/TestFieldTypeCollectionResource.java    |   19 +-
 .../solr/rest/schema/TestFieldTypeResource.java    |  105 +-
 .../solr/rest/schema/TestSchemaNameResource.java   |    8 +-
 .../solr/rest/schema/TestSchemaResource.java       |  266 +-
 .../rest/schema/TestSchemaSimilarityResource.java  |   10 +-
 .../rest/schema/TestSchemaVersionResource.java     |    9 +-
 .../schema/TestSerializedLuceneMatchVersion.java   |   59 +-
 .../rest/schema/TestUniqueKeyFieldResource.java    |    9 +-
 .../analysis/TestManagedStopFilterFactory.java     |  158 +-
 .../analysis/TestManagedSynonymFilterFactory.java  |  260 +-
 .../TestManagedSynonymGraphFilterFactory.java      |  251 +-
 .../org/apache/solr/schema/BadCopyFieldTest.java   |   35 +-
 .../org/apache/solr/schema/BadIndexSchemaTest.java |  151 +-
 .../org/apache/solr/schema/BooleanFieldTest.java   |   86 +-
 .../apache/solr/schema/ChangedSchemaMergeTest.java |  110 +-
 .../test/org/apache/solr/schema/CopyFieldTest.java |  325 +-
 .../apache/solr/schema/CurrencyFieldTypeTest.java  |  995 +--
 .../apache/solr/schema/CustomAnalyzerStrField.java |   26 +-
 .../test/org/apache/solr/schema/DateFieldTest.java |   26 +-
 .../org/apache/solr/schema/DateRangeFieldTest.java |  105 +-
 .../apache/solr/schema/DenseVectorFieldTest.java   |  757 ++-
 .../apache/solr/schema/DocValuesMissingTest.java   |  254 +-
 .../org/apache/solr/schema/DocValuesMultiTest.java |  645 +-
 .../test/org/apache/solr/schema/DocValuesTest.java | 1111 +++-
 .../test/org/apache/solr/schema/EnumFieldTest.java |  527 +-
 .../solr/schema/ExternalFileFieldSortTest.java     |   19 +-
 .../solr/schema/IndexSchemaRuntimeFieldTest.java   |   34 +-
 .../org/apache/solr/schema/IndexSchemaTest.java    |  101 +-
 .../IntPointPrefixActsAsRangeQueryFieldType.java   |    6 +-
 .../schema/ManagedSchemaRoundRobinCloudTest.java   |   39 +-
 .../org/apache/solr/schema/MyCrazyCustomField.java |   10 +-
 .../solr/schema/NotRequiredUniqueKeyTest.java      |   20 +-
 .../org/apache/solr/schema/NumericFieldsTest.java  |  108 +-
 .../schema/OpenExchangeRatesOrgProviderTest.java   |   51 +-
 .../test/org/apache/solr/schema/PolyFieldTest.java |   92 +-
 .../PreAnalyzedFieldManagedSchemaCloudTest.java    |   22 +-
 .../apache/solr/schema/PreAnalyzedFieldTest.java   |  159 +-
 .../apache/solr/schema/PrimitiveFieldTypeTest.java |   58 +-
 .../test/org/apache/solr/schema/RankFieldTest.java |  305 +-
 .../org/apache/solr/schema/RequiredFieldsTest.java |  197 +-
 .../solr/schema/ResolveAnalyzerByNameTest.java     |   67 +-
 .../apache/solr/schema/SchemaApiFailureTest.java   |   30 +-
 .../schema/SchemaVersionSpecificBehaviorTest.java  |  255 +-
 .../org/apache/solr/schema/SchemaWatcherTest.java  |   16 +-
 .../solr/schema/SpatialRPTFieldTypeTest.java       |  191 +-
 .../apache/solr/schema/SynonymTokenizerTest.java   |    8 +-
 .../org/apache/solr/schema/TestBinaryField.java    |   58 +-
 .../solr/schema/TestBulkSchemaConcurrent.java      |  223 +-
 .../apache/solr/schema/TestCloudManagedSchema.java |   42 +-
 .../apache/solr/schema/TestCloudSchemaless.java    |   96 +-
 .../org/apache/solr/schema/TestCollationField.java |  195 +-
 .../solr/schema/TestCollationFieldDocValues.java   |  194 +-
 .../org/apache/solr/schema/TestManagedSchema.java  |  202 +-
 .../apache/solr/schema/TestManagedSchemaAPI.java   |   33 +-
 .../solr/schema/TestManagedSchemaThreadSafety.java |   90 +-
 .../org/apache/solr/schema/TestOmitPositions.java  |   46 +-
 .../org/apache/solr/schema/TestPointFields.java    | 4693 +++++++++----
 .../org/apache/solr/schema/TestSchemaField.java    |   44 +-
 .../org/apache/solr/schema/TestSchemaManager.java  |   78 +-
 .../solr/schema/TestSchemalessBufferedUpdates.java |   84 +-
 .../apache/solr/schema/TestSortableTextField.java  |  700 +-
 .../test/org/apache/solr/schema/TestTextField.java |   24 +-
 .../solr/schema/TestUseDocValuesAsStored.java      |  391 +-
 .../solr/schema/TestUseDocValuesAsStored2.java     |  154 +-
 .../TrieIntPrefixActsAsRangeQueryFieldType.java    |    6 +-
 .../apache/solr/schema/WrappedIntPointField.java   |    6 +-
 .../apache/solr/schema/WrappedTrieIntField.java    |    1 +
 .../solr/search/AnalyticsMergeStrategyTest.java    |   60 +-
 .../org/apache/solr/search/AnalyticsQueryTest.java |   18 +-
 .../solr/search/AnalyticsTestQParserPlugin.java    |   63 +-
 .../search/ApacheLuceneSolrNearQueryBuilder.java   |   16 +-
 .../solr/search/ChooseOneWordQueryBuilder.java     |    9 +-
 .../solr/search/CurrencyRangeFacetCloudTest.java   |  466 +-
 .../org/apache/solr/search/CursorMarkTest.java     |   87 +-
 .../solr/search/DelayingSearchComponent.java       |   17 +-
 .../test/org/apache/solr/search/DocSetPerf.java    |   89 +-
 .../apache/solr/search/GoodbyeQueryBuilder.java    |    5 +-
 .../org/apache/solr/search/HandyQueryBuilder.java  |    7 +-
 .../org/apache/solr/search/HelloQueryBuilder.java  |    5 +-
 .../org/apache/solr/search/LargeFieldTest.java     |   47 +-
 .../apache/solr/search/MaxScoreCollectorTest.java  |   28 +-
 .../org/apache/solr/search/MergeStrategyTest.java  |  154 +-
 .../apache/solr/search/MockSearchComponent.java    |    9 +-
 .../org/apache/solr/search/QueryEqualityTest.java  | 1323 ++--
 .../org/apache/solr/search/QueryParsingTest.java   |  102 +-
 .../apache/solr/search/RankQParserPluginTest.java  |  417 +-
 .../test/org/apache/solr/search/RankQueryTest.java |   44 +-
 .../apache/solr/search/RankQueryTestPlugin.java    |  304 +-
 .../org/apache/solr/search/ReturnFieldsTest.java   |  548 +-
 .../search/SignificantTermsQParserPluginTest.java  |  223 +-
 .../apache/solr/search/SolrIndexSearcherTest.java  |  522 +-
 .../apache/solr/search/SortSpecParsingTest.java    |   77 +-
 .../org/apache/solr/search/SpatialFilterTest.java  |  182 +-
 .../solr/search/TestAddFieldRealTimeGet.java       |   41 +-
 .../org/apache/solr/search/TestBlockCollapse.java  | 1655 +++--
 .../org/apache/solr/search/TestCaffeineCache.java  |  130 +-
 .../solr/search/TestCancellableCollector.java      |    2 +-
 .../solr/search/TestCollapseQParserPlugin.java     | 1595 +++--
 .../search/TestComplexPhraseLeadingWildcard.java   |   89 +-
 .../search/TestComplexPhraseQParserPlugin.java     |  508 +-
 .../org/apache/solr/search/TestComponentsName.java |   59 +-
 .../org/apache/solr/search/TestCustomSort.java     |  366 +-
 .../test/org/apache/solr/search/TestDocSet.java    |  206 +-
 .../solr/search/TestElisionMultitermQuery.java     |    5 +-
 .../solr/search/TestExtendedDismaxParser.java      | 3976 ++++++-----
 .../apache/solr/search/TestFieldSortValues.java    |   26 +-
 .../apache/solr/search/TestFilteredDocIdSet.java   |  181 +-
 .../test/org/apache/solr/search/TestFiltering.java |  401 +-
 .../solr/search/TestFoldingMultitermQuery.java     |  244 +-
 .../solr/search/TestGraphTermsQParserPlugin.java   |   69 +-
 .../apache/solr/search/TestHashQParserPlugin.java  |  165 +-
 .../org/apache/solr/search/TestIndexSearcher.java  |  261 +-
 .../org/apache/solr/search/TestInitQParser.java    |   13 +-
 .../search/TestLegacyNumericRangeQueryBuilder.java |   54 +-
 .../solr/search/TestMaxScoreQueryParser.java       |   82 +-
 .../org/apache/solr/search/TestMinHashQParser.java |  183 +-
 .../org/apache/solr/search/TestMissingGroups.java  |  192 +-
 .../apache/solr/search/TestMultiWordSynonyms.java  |  249 +-
 .../apache/solr/search/TestNoOpRegenerator.java    |   46 +-
 ...estOverriddenPrefixQueryForCustomFieldType.java |   43 +-
 .../solr/search/TestPayloadCheckQParserPlugin.java |  103 +-
 .../solr/search/TestPayloadScoreQParserPlugin.java |   83 +-
 .../apache/solr/search/TestPseudoReturnFields.java | 1127 ++--
 .../org/apache/solr/search/TestQueryTypes.java     |  739 ++-
 .../org/apache/solr/search/TestQueryUtils.java     |  327 +-
 .../test/org/apache/solr/search/TestRTGBase.java   |   26 +-
 .../search/TestRandomCollapseQParserPlugin.java    |  216 +-
 .../org/apache/solr/search/TestRangeQuery.java     |  653 +-
 .../solr/search/TestReRankQParserPlugin.java       |  724 +-
 .../org/apache/solr/search/TestRealTimeGet.java    | 1109 ++--
 .../test/org/apache/solr/search/TestRecovery.java  | 1339 ++--
 .../test/org/apache/solr/search/TestReload.java    |   45 +-
 .../org/apache/solr/search/TestReloadDeadlock.java |  201 +-
 .../org/apache/solr/search/TestSearchPerf.java     |  132 +-
 .../org/apache/solr/search/TestSearcherReuse.java  |  103 +-
 .../solr/search/TestSimpleQParserPlugin.java       |  560 +-
 .../org/apache/solr/search/TestSmileRequest.java   |   42 +-
 .../org/apache/solr/search/TestSolr4Spatial.java   |  555 +-
 .../org/apache/solr/search/TestSolr4Spatial2.java  |  388 +-
 .../org/apache/solr/search/TestSolrCachePerf.java  |   97 +-
 .../org/apache/solr/search/TestSolrCoreParser.java |   88 +-
 .../apache/solr/search/TestSolrFieldCacheBean.java |   32 +-
 .../src/test/org/apache/solr/search/TestSolrJ.java |   82 +-
 .../apache/solr/search/TestSolrQueryParser.java    | 2164 +++---
 .../src/test/org/apache/solr/search/TestSort.java  |  265 +-
 .../apache/solr/search/TestStandardQParsers.java   |   52 +-
 .../org/apache/solr/search/TestStressLucene.java   |  444 +-
 .../org/apache/solr/search/TestStressRecovery.java |  454 +-
 .../org/apache/solr/search/TestStressReorder.java  |  463 +-
 .../apache/solr/search/TestStressUserVersions.java |  409 +-
 .../org/apache/solr/search/TestStressVersions.java |  353 +-
 .../solr/search/TestSurroundQueryParser.java       |   87 +-
 .../org/apache/solr/search/TestTaskManagement.java |  373 +-
 .../apache/solr/search/TestTermQParserPlugin.java  |  130 +-
 .../apache/solr/search/TestTermsQParserPlugin.java |  197 +-
 .../test/org/apache/solr/search/TestTrieFacet.java |  158 +-
 .../apache/solr/search/TestValueSourceCache.java   |   53 +-
 .../apache/solr/search/TestXmlQParserPlugin.java   |   10 +-
 ...stributedFacetSimpleRefinementLongTailTest.java |  373 +-
 .../solr/search/facet/RangeFacetCloudTest.java     |  964 ++-
 .../search/facet/SpatialHeatmapFacetsTest.java     |  465 +-
 .../search/facet/TestCloudJSONFacetJoinDomain.java |  724 +-
 .../solr/search/facet/TestCloudJSONFacetSKG.java   |  695 +-
 .../search/facet/TestCloudJSONFacetSKGEquiv.java   | 1047 +--
 .../solr/search/facet/TestJsonFacetErrors.java     |  563 +-
 .../solr/search/facet/TestJsonFacetRefinement.java | 2504 ++++---
 .../apache/solr/search/facet/TestJsonFacets.java   | 6286 +++++++++++-------
 .../search/facet/TestJsonFacetsStatsParsing.java   |  119 +-
 .../facet/TestJsonFacetsWithNestedObjects.java     |  653 +-
 .../solr/search/facet/TestJsonRangeFacets.java     |  555 +-
 .../solr/search/function/AggValueSourceTest.java   |   11 +-
 .../solr/search/function/SortByFunctionTest.java   |  357 +-
 .../solr/search/function/TestFunctionQuery.java    | 1348 ++--
 .../function/TestMinMaxOnMultiValuedField.java     |  967 +--
 .../apache/solr/search/function/TestOrdValues.java |  119 +-
 .../search/function/TestSortByMinMaxFunction.java  |   11 +-
 .../function/distance/DistanceFunctionTest.java    |  396 +-
 .../org/apache/solr/search/join/BJQParserTest.java |  575 +-
 .../search/join/CrossCollectionJoinQueryTest.java  |  153 +-
 .../apache/solr/search/join/GraphQueryTest.java    |  168 +-
 .../search/join/InvalidConfigJoinQueryTest.java    |   14 +-
 .../solr/search/join/TestCloudNestedDocsSort.java  |  170 +-
 .../solr/search/join/TestNestedDocsSort.java       |  231 +-
 .../solr/search/join/TestScoreJoinQPNoScore.java   |  397 +-
 .../solr/search/join/TestScoreJoinQPScore.java     |  335 +-
 .../join/another/BJQFilterAccessibleTest.java      |   16 +-
 .../apache/solr/search/json/TestJsonRequest.java   | 1075 +--
 .../solr/search/mlt/CloudMLTQParserTest.java       |  211 +-
 .../solr/search/mlt/SimpleMLTQParserTest.java      |  122 +-
 .../apache/solr/search/neural/KnnQParserTest.java  |  597 +-
 .../similarities/BaseSimilarityTestCase.java       |   18 +-
 .../similarities/TestBM25SimilarityFactory.java    |   10 +-
 .../similarities/TestBooleanSimilarityFactory.java |    6 +-
 .../similarities/TestClassicSimilarityFactory.java |    9 +-
 .../similarities/TestDFISimilarityFactory.java     |   13 +-
 .../similarities/TestDFRSimilarityFactory.java     |   12 +-
 .../similarities/TestIBSimilarityFactory.java      |   10 +-
 .../TestLMDirichletSimilarityFactory.java          |   10 +-
 .../TestLMJelinekMercerSimilarityFactory.java      |   10 +-
 .../TestNonDefinedSimilarityFactory.java           |    9 +-
 .../similarities/TestPerFieldSimilarity.java       |   27 +-
 .../TestPerFieldSimilarityWithDefaultOverride.java |   17 +-
 .../TestSweetSpotSimilarityFactory.java            |   82 +-
 .../solr/search/stats/TestBaseStatsCache.java      |   10 +-
 .../solr/search/stats/TestDefaultStatsCache.java   |   41 +-
 .../apache/solr/search/stats/TestDistribIDF.java   |   64 +-
 .../solr/search/stats/TestExactStatsCache.java     |   12 +-
 .../solr/security/AllowListUrlCheckerTest.java     |   13 +-
 .../solr/security/AuditLoggerIntegrationTest.java  |  371 +-
 .../solr/security/AuditLoggerPluginTest.java       |  199 +-
 .../AuthWithShardHandlerFactoryOverrideTest.java   |   63 +-
 .../BaseTestRuleBasedAuthorizationPlugin.java      |  874 ++-
 .../solr/security/BasicAuthIntegrationTest.java    |  332 +-
 .../solr/security/BasicAuthOnSingleNodeTest.java   |   66 +-
 .../solr/security/BasicAuthStandaloneTest.java     |  105 +-
 .../solr/security/CallbackAuditLoggerPlugin.java   |   30 +-
 .../apache/solr/security/CertAuthPluginTest.java   |   83 +-
 .../solr/security/MockAuditLoggerPlugin.java       |    7 +-
 .../solr/security/MockAuthenticationPlugin.java    |   41 +-
 .../solr/security/MockAuthorizationPlugin.java     |   14 +-
 .../apache/solr/security/MultiAuthPluginTest.java  |  178 +-
 .../security/MultiDestinationAuditLoggerTest.java  |   21 +-
 .../security/PKIAuthenticationIntegrationTest.java |   78 +-
 .../solr/security/PrincipalWithUserRoles.java      |   20 +-
 .../security/SolrLogAuditLoggerPluginTest.java     |   15 +-
 .../solr/security/TestAuthorizationFramework.java  |   35 +-
 ...stExternalRoleRuleBasedAuthorizationPlugin.java |   15 +-
 .../solr/security/TestPKIAuthenticationPlugin.java |  119 +-
 .../security/TestSha256AuthenticationProvider.java |   33 +-
 .../org/apache/solr/servlet/CacheHeaderTest.java   |  113 +-
 .../apache/solr/servlet/CacheHeaderTestBase.java   |   75 +-
 .../solr/servlet/DirectSolrConnectionTest.java     |   64 +-
 .../apache/solr/servlet/HttpSolrCallCloudTest.java |   41 +-
 .../org/apache/solr/servlet/NoCacheHeaderTest.java |   73 +-
 .../apache/solr/servlet/ResponseHeaderTest.java    |   31 +-
 .../apache/solr/servlet/SecurityHeadersTest.java   |   53 +-
 .../apache/solr/servlet/SolrRequestParserTest.java |  435 +-
 .../solr/servlet/TestRequestRateLimiter.java       |  121 +-
 .../spelling/ConjunctionSolrSpellCheckerTest.java  |   50 +-
 .../solr/spelling/DirectSolrSpellCheckerTest.java  |  125 +-
 .../solr/spelling/FileBasedSpellCheckerTest.java   |  157 +-
 .../solr/spelling/IndexBasedSpellCheckerTest.java  |  381 +-
 .../apache/solr/spelling/SimpleQueryConverter.java |   12 +-
 .../solr/spelling/SpellCheckCollatorTest.java      |  585 +-
 .../SpellCheckCollatorWithCollapseTest.java        |   64 +-
 .../spelling/SpellPossibilityIteratorTest.java     |   88 +-
 .../solr/spelling/SpellingQueryConverterTest.java  |  159 +-
 .../spelling/TestSuggestSpellingConverter.java     |   49 +-
 .../spelling/WordBreakSolrSpellCheckerTest.java    |  461 +-
 .../suggest/RandomTestDictionaryFactory.java       |   16 +-
 .../solr/spelling/suggest/SuggesterTest.java       |   99 +-
 .../suggest/TestAnalyzeInfixSuggestions.java       |  211 +-
 .../spelling/suggest/TestAnalyzedSuggestions.java  |   38 +-
 .../suggest/TestBlendedInfixSuggestions.java       |  139 +-
 .../spelling/suggest/TestFileDictionaryLookup.java |  129 +-
 .../spelling/suggest/TestFreeTextSuggestions.java  |   67 +-
 .../suggest/TestFuzzyAnalyzedSuggestions.java      |  132 +-
 .../TestHighFrequencyDictionaryFactory.java        |  152 +-
 .../spelling/suggest/TestPhraseSuggestions.java    |   20 +-
 .../apache/solr/uninverting/TestDocTermOrds.java   |  257 +-
 .../uninverting/TestDocTermOrdsUninvertLimit.java  |   60 +-
 .../apache/solr/uninverting/TestFieldCache.java    |  397 +-
 .../solr/uninverting/TestFieldCacheReopen.java     |   29 +-
 .../solr/uninverting/TestFieldCacheSort.java       |  563 +-
 .../solr/uninverting/TestFieldCacheSortRandom.java |  117 +-
 .../uninverting/TestFieldCacheVsDocValues.java     |  128 +-
 .../uninverting/TestFieldCacheWithThreads.java     |  189 +-
 .../solr/uninverting/TestLegacyFieldCache.java     |  262 +-
 .../solr/uninverting/TestNumericTerms32.java       |   91 +-
 .../solr/uninverting/TestNumericTerms64.java       |   92 +-
 .../solr/uninverting/TestUninvertingReader.java    |  189 +-
 .../org/apache/solr/update/AddBlockUpdateTest.java |  728 +-
 .../solr/update/AnalysisErrorHandlingTest.java     |   19 +-
 .../solr/update/DataDrivenBlockJoinTest.java       |   52 +-
 .../solr/update/DeleteByIdWithRouterFieldTest.java |  292 +-
 .../solr/update/DirectUpdateHandlerTest.java       |  293 +-
 .../apache/solr/update/DocumentBuilderTest.java    |  228 +-
 .../apache/solr/update/MaxSizeAutoCommitTest.java  |  186 +-
 .../solr/update/MockStreamingSolrClients.java      |   28 +-
 .../apache/solr/update/MockingHttp2SolrClient.java |   32 +-
 .../test/org/apache/solr/update/PeerSyncTest.java  |  411 +-
 .../solr/update/PeerSyncWithBufferUpdatesTest.java |   79 +-
 .../PeerSyncWithIndexFingerprintCachingTest.java   |   69 +-
 ...ncWithLeaderAndIndexFingerprintCachingTest.java |   17 +-
 .../apache/solr/update/PeerSyncWithLeaderTest.java |   25 +-
 .../test/org/apache/solr/update/RootFieldTest.java |   59 +-
 .../org/apache/solr/update/SoftAutoCommitTest.java |  388 +-
 .../apache/solr/update/SolrCmdDistributorTest.java |  538 +-
 .../apache/solr/update/SolrIndexConfigTest.java    |  119 +-
 .../apache/solr/update/SolrIndexMetricsTest.java   |   47 +-
 .../apache/solr/update/SolrIndexSplitterTest.java  |  239 +-
 .../solr/update/TestAtomicUpdateErrorCases.java    |   47 +-
 .../solr/update/TestExceedMaxTermLength.java       |   80 +-
 .../update/TestInPlaceUpdateWithRouteField.java    |  108 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java     | 1045 ++-
 .../update/TestInPlaceUpdatesRequiredField.java    |   17 +-
 .../solr/update/TestInPlaceUpdatesStandalone.java  | 1164 ++--
 .../solr/update/TestIndexingPerformance.java       |   98 +-
 .../solr/update/TestNestedUpdateProcessor.java     |  607 +-
 .../test/org/apache/solr/update/TestUpdate.java    |  260 +-
 .../org/apache/solr/update/TransactionLogTest.java |   11 +-
 .../test/org/apache/solr/update/UpdateLogTest.java |  181 +-
 .../org/apache/solr/update/UpdateParamsTest.java   |   41 +-
 .../org/apache/solr/update/VersionInfoTest.java    |   59 +-
 .../AbstractAtomicUpdatesMultivalueTestBase.java   |  241 +-
 .../AddSchemaFieldsUpdateProcessorFactoryTest.java |  212 +-
 .../update/processor/AtomicUpdateJavabinTest.java  |  181 +-
 .../AtomicUpdateProcessorFactoryTest.java          |  232 +-
 .../solr/update/processor/AtomicUpdatesTest.java   |  870 ++-
 .../CategoryRoutedAliasUpdateProcessorTest.java    |  352 +-
 .../ClassificationUpdateProcessorFactoryTest.java  |   48 +-
 ...assificationUpdateProcessorIntegrationTest.java |  286 +-
 .../ClassificationUpdateProcessorTest.java         |  667 +-
 .../CloneFieldUpdateProcessorFactoryTest.java      |  351 +-
 .../processor/CustomUpdateRequestProcessor.java    |    8 +-
 .../CustomUpdateRequestProcessorFactory.java       |   17 +-
 .../processor/DefaultValueUpdateProcessorTest.java |   86 +-
 .../DimensionalRoutedAliasUpdateProcessorTest.java |  432 +-
 .../processor/DistributedUpdateProcessorTest.java  |  129 +-
 .../DocExpirationUpdateProcessorFactoryTest.java   |  201 +-
 .../FieldMutatingUpdateProcessorTest.java          |  920 +--
 ...reCommitOptimizeUpdateProcessorFactoryTest.java |   30 +-
 .../IgnoreLargeDocumentProcessorFactoryTest.java   |   52 +-
 .../JavaBinAtomicUpdateMultivalueTest.java         |    1 -
 .../update/processor/NestedAtomicUpdateTest.java   |  922 ++-
 .../ParsingFieldUpdateProcessorsTest.java          |  693 +-
 .../processor/PreAnalyzedUpdateProcessorTest.java  |  107 +-
 .../processor/RecordingUpdateProcessorFactory.java |   55 +-
 .../update/processor/RegexBoostProcessorTest.java  |   35 +-
 .../processor/RoutedAliasUpdateProcessorTest.java  |  209 +-
 .../SignatureUpdateProcessorFactoryTest.java       |  115 +-
 .../SkipExistingDocumentsProcessorFactoryTest.java |   68 +-
 .../processor/TemplateUpdateProcessorTest.java     |   56 +-
 .../update/processor/TestCloudDeduplication.java   |   83 +-
 .../processor/TestDocBasedVersionConstraints.java  |  828 ++-
 .../processor/TestPartialUpdateDeduplication.java  |    6 +-
 .../TimeRoutedAliasUpdateProcessorTest.java        | 1085 +--
 .../processor/TolerantUpdateProcessorTest.java     |  396 +-
 .../processor/TrackingUpdateProcessorFactory.java  |   59 +-
 .../update/processor/URLClassifyProcessorTest.java |  139 +-
 .../processor/UUIDUpdateProcessorFallbackTest.java |  117 +-
 .../UniqFieldsUpdateProcessorFactoryTest.java      |   84 +-
 .../UpdateRequestProcessorFactoryTest.java         |  165 +-
 .../processor/XMLAtomicUpdateMultivalueTest.java   |    1 -
 .../test/org/apache/solr/util/AuthToolTest.java    |   34 +-
 .../src/test/org/apache/solr/util/BitSetPerf.java  |  109 +-
 .../org/apache/solr/util/CircularListTest.java     |   13 +-
 .../org/apache/solr/util/DateMathParserTest.java   |  167 +-
 .../test/org/apache/solr/util/DynamicMapsTest.java |   11 +-
 .../test/org/apache/solr/util/FileUtilsTest.java   |    6 +-
 .../src/test/org/apache/solr/util/LongSetTest.java |    2 -
 .../test/org/apache/solr/util/ModuleUtilsTest.java |   18 +-
 .../org/apache/solr/util/OrderedExecutorTest.java  |  141 +-
 .../test/org/apache/solr/util/PrimUtilsTest.java   |   44 +-
 .../org/apache/solr/util/SimplePostToolTest.java   |  145 +-
 .../org/apache/solr/util/SolrCliUptimeTest.java    |   27 +-
 .../org/apache/solr/util/SolrLogPostToolTest.java  |  203 +-
 .../org/apache/solr/util/SolrPluginUtilsTest.java  |  332 +-
 .../org/apache/solr/util/TestCircuitBreaker.java   |  137 +-
 .../test/org/apache/solr/util/TestExportTool.java  |  102 +-
 .../org/apache/solr/util/TestFastOutputStream.java |   20 +-
 .../apache/solr/util/TestMaxTokenLenTokenizer.java |  151 +-
 .../test/org/apache/solr/util/TestRTimerTree.java  |    8 +-
 .../org/apache/solr/util/TestSafeXMLParsing.java   |  112 +-
 .../apache/solr/util/TestSolrCLIRunExample.java    |  310 +-
 .../solr/util/TestSolrJacksonAnnotation.java       |   31 +-
 .../test/org/apache/solr/util/TestSolrVersion.java |   11 +-
 .../org/apache/solr/util/TestSystemIdResolver.java |  124 +-
 .../org/apache/solr/util/TestTestInjection.java    |   24 +-
 .../src/test/org/apache/solr/util/TestUtils.java   |  415 +-
 .../org/apache/solr/util/TimeZoneUtilsTest.java    |  127 +-
 .../util/configuration/SSLConfigurationsTest.java  |   33 +-
 .../SSLCredentialProviderFactoryTest.java          |   23 +-
 .../providers/EnvSSLCredentialProviderTest.java    |   27 +-
 .../SysPropSSLCredentialProviderTest.java          |   28 +-
 .../BigEndianAscendingWordDeserializerTest.java    |  305 +-
 .../hll/BigEndianAscendingWordSerializerTest.java  |  595 +-
 .../org/apache/solr/util/hll/BitVectorTest.java    |  255 +-
 .../org/apache/solr/util/hll/ExplicitHLLTest.java  |  385 +-
 .../test/org/apache/solr/util/hll/FullHLLTest.java |  614 +-
 .../apache/solr/util/hll/HLLSerializationTest.java |  133 +-
 .../test/org/apache/solr/util/hll/HLLUtilTest.java |   39 +-
 .../solr/util/hll/IntegrationTestGenerator.java    | 1232 ++--
 .../org/apache/solr/util/hll/NumberUtilTest.java   |  141 +-
 .../solr/util/hll/ProbabilisticTestUtil.java       |   93 +-
 .../org/apache/solr/util/hll/SparseHLLTest.java    |  960 +--
 .../apache/solr/util/stats/MetricUtilsTest.java    |  175 +-
 .../solr/util/tracing/TestDistributedTracing.java  |   58 +-
 .../solr/util/tracing/TestHttpServletCarrier.java  |   29 +-
 918 files changed, 135280 insertions(+), 89709 deletions(-)

diff --git a/gradle/validation/spotless.gradle b/gradle/validation/spotless.gradle
index 3f72246..1da1b5b 100644
--- a/gradle/validation/spotless.gradle
+++ b/gradle/validation/spotless.gradle
@@ -45,7 +45,7 @@ configure(project(":solr").subprojects) { prj ->
         // Exclude certain files (generated ones, mostly).
         switch (project.path) {
           case ":solr:core":
-            targetExclude "src/**/*.java"
+            targetExclude "src/java/**/*.java"
             break
           case ":solr:solrj":
             targetExclude "src/test/org/apache/solr/client/solrj/io/stream/*.java"
diff --git a/solr/core/src/test/org/apache/solr/AnalysisAfterCoreReloadTest.java b/solr/core/src/test/org/apache/solr/AnalysisAfterCoreReloadTest.java
index 49c6351..f701968 100644
--- a/solr/core/src/test/org/apache/solr/AnalysisAfterCoreReloadTest.java
+++ b/solr/core/src/test/org/apache/solr/AnalysisAfterCoreReloadTest.java
@@ -16,6 +16,13 @@
  */
 package org.apache.solr;
 
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
@@ -28,22 +35,14 @@ import org.apache.solr.core.SolrCore;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
-import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
-
 public class AnalysisAfterCoreReloadTest extends SolrTestCaseJ4 {
-  
+
   private static String tmpSolrHome;
   int port = 0;
   static final String context = "/solr";
 
   static final String collection = "collection1";
-  
+
   @BeforeClass
   public static void beforeClass() throws Exception {
     tmpSolrHome = createTempDir().toFile().getAbsolutePath();
@@ -52,72 +51,70 @@ public class AnalysisAfterCoreReloadTest extends SolrTestCaseJ4 {
   }
 
   @AfterClass
-  public static void AfterClass() throws Exception {
-    
-  }
-  
+  public static void AfterClass() throws Exception {}
+
   public void testStopwordsAfterCoreReload() throws Exception {
     SolrInputDocument doc = new SolrInputDocument();
-    doc.setField( "id", "42" );
-    doc.setField( "teststop", "terma stopworda stopwordb stopwordc" );
-    
+    doc.setField("id", "42");
+    doc.setField("teststop", "terma stopworda stopwordb stopwordc");
+
     // default stopwords - stopworda and stopwordb
-    
+
     UpdateRequest up = new UpdateRequest();
     up.setAction(ACTION.COMMIT, true, true);
-    up.add( doc );
-    up.process( getSolrCore() );
+    up.add(doc);
+    up.process(getSolrCore());
 
     SolrQuery q = new SolrQuery();
-    QueryRequest r = new QueryRequest( q );
-    q.setQuery( "teststop:terma" );
-    assertEquals( 1, r.process( getSolrCore() ).getResults().size() );
+    QueryRequest r = new QueryRequest(q);
+    q.setQuery("teststop:terma");
+    assertEquals(1, r.process(getSolrCore()).getResults().size());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:stopworda" );
-    assertEquals( 0, r.process( getSolrCore() ).getResults().size() );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:stopworda");
+    assertEquals(0, r.process(getSolrCore()).getResults().size());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:stopwordb" );
-    assertEquals( 0, r.process( getSolrCore() ).getResults().size() );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:stopwordb");
+    assertEquals(0, r.process(getSolrCore()).getResults().size());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:stopwordc" );
-    assertEquals( 1, r.process( getSolrCore() ).getResults().size() );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:stopwordc");
+    assertEquals(1, r.process(getSolrCore()).getResults().size());
 
     // overwrite stopwords file with stopword list ["stopwordc"] and reload the core
     overwriteStopwords("stopwordc\n");
     h.getCoreContainer().reload(collection);
 
-    up.process( getSolrCore() );
+    up.process(getSolrCore());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:terma" );
-    assertEquals( 1, r.process( getSolrCore() ).getResults().size() );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:terma");
+    assertEquals(1, r.process(getSolrCore()).getResults().size());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:stopworda" );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:stopworda");
     // stopworda is no longer a stopword
-    assertEquals( 1, r.process( getSolrCore() ).getResults().size() );
+    assertEquals(1, r.process(getSolrCore()).getResults().size());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:stopwordb" );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:stopwordb");
     // stopwordb is no longer a stopword
-    assertEquals( 1, r.process( getSolrCore() ).getResults().size() );
+    assertEquals(1, r.process(getSolrCore()).getResults().size());
 
     q = new SolrQuery();
-    r = new QueryRequest( q );
-    q.setQuery( "teststop:stopwordc" );
+    r = new QueryRequest(q);
+    q.setQuery("teststop:stopwordc");
     // stopwordc should be a stopword
-    assertEquals( 0, r.process( getSolrCore() ).getResults().size() );
+    assertEquals(0, r.process(getSolrCore()).getResults().size());
   }
-  
+
   private void overwriteStopwords(String stopwords) throws IOException {
     try (SolrCore core = h.getCoreContainer().getCore(collection)) {
       Path configPath = core.getResourceLoader().getConfigPath();
@@ -125,7 +122,7 @@ public class AnalysisAfterCoreReloadTest extends SolrTestCaseJ4 {
       Files.write(configPath.resolve("stopwords.txt"), stopwords.getBytes(StandardCharsets.UTF_8));
     }
   }
-  
+
   @Override
   public void tearDown() throws Exception {
     Path configPath;
@@ -142,5 +139,4 @@ public class AnalysisAfterCoreReloadTest extends SolrTestCaseJ4 {
   protected SolrClient getSolrCore() {
     return new EmbeddedSolrServer(h.getCoreContainer(), collection);
   }
-
 }
diff --git a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
index 55946f3..39ec3d6 100644
--- a/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
+++ b/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
@@ -16,8 +16,8 @@
  */
 package org.apache.solr;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Metric;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.StringWriter;
@@ -27,13 +27,12 @@ import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
-
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Metric;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
-import org.apache.lucene.misc.document.LazyDocument;
 import org.apache.lucene.index.IndexableField;
+import org.apache.lucene.misc.document.LazyDocument;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.MapSolrParams;
@@ -59,17 +58,18 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
- * Tests some basic functionality of Solr while demonstrating good
- * Best Practices for using SolrTestCaseJ4
+ * Tests some basic functionality of Solr while demonstrating good Best Practices for using
+ * SolrTestCaseJ4
  */
 public class BasicFunctionalityTest extends SolrTestCaseJ4 {
 
-
-  public String getCoreName() { return "basic"; }
+  public String getCoreName() {
+    return "basic";
+  }
 
   @BeforeClass
   public static void beforeTests() throws Exception {
-    initCore("solrconfig.xml","schema.xml");
+    initCore("solrconfig.xml", "schema.xml");
   }
   // tests the performance of dynamic field creation and
   // field property testing.
@@ -101,23 +101,22 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     System.out.println("ret=" + ret + " time="+ (end-start));
   }
   ***/
-  
+
   @Test
   public void testIgnoredFields() throws Exception {
-    lrf.args.put(CommonParams.VERSION,"2.2");
-    assertU("adding doc with ignored field",
-            adoc("id", "42", "foo_ignored", "blah blah"));
-    assertU("commit",
-            commit());
-    
-    // :TODO: the behavior of querying on an unindexed field should be better specified in the future.
-    assertQ("query with ignored field",
-            req("bar_ignored:yo id:42")
-            ,"//*[@numFound='1']"
-            ,"//str[@name='id'][.='42']"
-            );
+    lrf.args.put(CommonParams.VERSION, "2.2");
+    assertU("adding doc with ignored field", adoc("id", "42", "foo_ignored", "blah blah"));
+    assertU("commit", commit());
+
+    // :TODO: the behavior of querying on an unindexed field should be better specified in the
+    // future.
+    assertQ(
+        "query with ignored field",
+        req("bar_ignored:yo id:42"),
+        "//*[@numFound='1']",
+        "//str[@name='id'][.='42']");
   }
-  
+
   @Test
   public void testSomeStuff() throws Exception {
     clearIndex();
@@ -134,215 +133,161 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     assertTrue(metrics.containsKey("CORE.coreName"));
     assertTrue(metrics.containsKey("CORE.refCount"));
     @SuppressWarnings({"unchecked"})
-    Gauge<Number> g = (Gauge<Number>)metrics.get("CORE.refCount");
+    Gauge<Number> g = (Gauge<Number>) metrics.get("CORE.refCount");
     assertTrue(g.getValue().intValue() > 0);
 
-    lrf.args.put(CommonParams.VERSION,"2.2");
-    assertQ("test query on empty index",
-            req("qlkciyopsbgzyvkylsjhchghjrdf")
-            ,"//result[@numFound='0']"
-            );
+    lrf.args.put(CommonParams.VERSION, "2.2");
+    assertQ(
+        "test query on empty index",
+        req("qlkciyopsbgzyvkylsjhchghjrdf"),
+        "//result[@numFound='0']");
 
     // test escaping of ";"
-    assertU("deleting 42 for no reason at all",
-            delI("42"));
-    assertU("adding doc#42",
-            adoc("id", "42", "val_s", "aa;bb"));
-    assertU("does commit work?",
-            commit());
-
-    assertQ("backslash escaping semicolon",
-            req("id:42 AND val_s:aa\\;bb")
-            ,"//*[@numFound='1']"
-            ,"//str[@name='id'][.='42']"
-            );
-
-    assertQ("quote escaping semicolon",
-            req("id:42 AND val_s:\"aa;bb\"")
-            ,"//*[@numFound='1']"
-            ,"//str[@name='id'][.='42']"
-            );
-
-    assertQ("no escaping semicolon",
-            req("id:42 AND val_s:aa")
-            ,"//*[@numFound='0']"
-            );
+    assertU("deleting 42 for no reason at all", delI("42"));
+    assertU("adding doc#42", adoc("id", "42", "val_s", "aa;bb"));
+    assertU("does commit work?", commit());
+
+    assertQ(
+        "backslash escaping semicolon",
+        req("id:42 AND val_s:aa\\;bb"),
+        "//*[@numFound='1']",
+        "//str[@name='id'][.='42']");
+
+    assertQ(
+        "quote escaping semicolon",
+        req("id:42 AND val_s:\"aa;bb\""),
+        "//*[@numFound='1']",
+        "//str[@name='id'][.='42']");
+
+    assertQ("no escaping semicolon", req("id:42 AND val_s:aa"), "//*[@numFound='0']");
 
     assertU(delI("42"));
     assertU(commit());
-    assertQ(req("id:42")
-            ,"//*[@numFound='0']"
-            );
+    assertQ(req("id:42"), "//*[@numFound='0']");
 
     // test overwrite default of true
 
     assertU(adoc("id", "42", "val_s", "AAA"));
     assertU(adoc("id", "42", "val_s", "BBB"));
     assertU(commit());
-    assertQ(req("id:42")
-            ,"//*[@numFound='1']"
-            ,"//str[.='BBB']"
-            );
+    assertQ(req("id:42"), "//*[@numFound='1']", "//str[.='BBB']");
     assertU(adoc("id", "42", "val_s", "CCC"));
     assertU(adoc("id", "42", "val_s", "DDD"));
     assertU(commit());
-    assertQ(req("id:42")
-            ,"//*[@numFound='1']"
-            ,"//str[.='DDD']"
-            );
+    assertQ(req("id:42"), "//*[@numFound='1']", "//str[.='DDD']");
 
     // test deletes
-    String [] adds = new String[] {
-      add( doc("id","101"), "overwrite", "true" ),
-      add( doc("id","101"), "overwrite", "true" ),
-      add( doc("id","105"), "overwrite", "false"  ),
-      add( doc("id","102"), "overwrite", "true" ),
-      add( doc("id","103"), "overwrite", "false"  ),
-      add( doc("id","101"), "overwrite", "true" ),
-    };
+    String[] adds =
+        new String[] {
+          add(doc("id", "101"), "overwrite", "true"),
+          add(doc("id", "101"), "overwrite", "true"),
+          add(doc("id", "105"), "overwrite", "false"),
+          add(doc("id", "102"), "overwrite", "true"),
+          add(doc("id", "103"), "overwrite", "false"),
+          add(doc("id", "101"), "overwrite", "true"),
+        };
     for (String a : adds) {
       assertU(a, a);
     }
     assertU(commit());
 
     // test maxint
-    assertQ(req("q","id:[100 TO 110]", "rows","2147483647")
-            ,"//*[@numFound='4']"
-            );
+    assertQ(req("q", "id:[100 TO 110]", "rows", "2147483647"), "//*[@numFound='4']");
 
     // test big limit
-    assertQ(req("q","id:[100 TO 111]", "rows","1147483647")
-            ,"//*[@numFound='4']"
-            );
+    assertQ(req("q", "id:[100 TO 111]", "rows", "1147483647"), "//*[@numFound='4']");
 
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='4']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='4']");
     assertU(delI("102"));
     assertU(commit());
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='3']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='3']");
     assertU(delI("105"));
     assertU(commit());
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='2']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='2']");
     assertU(delQ("id:[100 TO 110]"));
     assertU(commit());
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='0']"
-            );
-    
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='0']");
+
     assertU(BaseTestHarness.simpleTag("rollback"));
     assertU(commit());
   }
 
-
-  /**
-   * verify that delete by query works with the QParser framework and
-   * pure negative queries
-   */
+  /** verify that delete by query works with the QParser framework and pure negative queries */
   public void testNonTrivialDeleteByQuery() throws Exception {
     clearIndex();
-    
+
     // setup
-    assertU( add(doc("id","101", "text", "red apple" )) );
-    assertU( add(doc("id","102", "text", "purple grape" )) );
-    assertU( add(doc("id","103", "text", "green grape" )) );
-    assertU( add(doc("id","104", "text", "green pear" )) );
-    assertU( add(doc("id","105", "text", "yellow banana" )) );
-    assertU( add(doc("id","106", "text", "red cherry" )) );
+    assertU(add(doc("id", "101", "text", "red apple")));
+    assertU(add(doc("id", "102", "text", "purple grape")));
+    assertU(add(doc("id", "103", "text", "green grape")));
+    assertU(add(doc("id", "104", "text", "green pear")));
+    assertU(add(doc("id", "105", "text", "yellow banana")));
+    assertU(add(doc("id", "106", "text", "red cherry")));
 
     // sanity checks
     assertU(commit());
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='6']"
-            );
-    assertQ(req("*:*")
-            ,"//*[@numFound='6']"
-            );
-    assertQ(req("text:red")
-            ,"//*[@numFound='2']"
-            );
-    assertQ(req("-text:red")
-            ,"//*[@numFound='4']"
-            );
-    assertQ(req("text:grape")
-            ,"//*[@numFound='2']"
-            );
-    assertQ(req("-text:grape")
-            ,"//*[@numFound='4']"
-            );
-    assertQ(req("-text:red -text:grape")
-            ,"//*[@numFound='2']"
-            );
-    assertQ(req("{!lucene q.op=AND df=text}grape green")
-            ,"//*[@numFound='1']"
-            ,"//str[@name='id'][.='103']"
-             );
-    assertQ(req("-_val_:\"{!lucene q.op=AND df=text}grape green\"")
-            ,"//*[@numFound='5']"
-            ,"//str[@name='id'][.='101']"
-            ,"//str[@name='id'][.='102']"
-            ,"//str[@name='id'][.='104']"
-            ,"//str[@name='id'][.='105']"
-            ,"//str[@name='id'][.='106']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='6']");
+    assertQ(req("*:*"), "//*[@numFound='6']");
+    assertQ(req("text:red"), "//*[@numFound='2']");
+    assertQ(req("-text:red"), "//*[@numFound='4']");
+    assertQ(req("text:grape"), "//*[@numFound='2']");
+    assertQ(req("-text:grape"), "//*[@numFound='4']");
+    assertQ(req("-text:red -text:grape"), "//*[@numFound='2']");
+    assertQ(
+        req("{!lucene q.op=AND df=text}grape green"),
+        "//*[@numFound='1']",
+        "//str[@name='id'][.='103']");
+    assertQ(
+        req("-_val_:\"{!lucene q.op=AND df=text}grape green\""),
+        "//*[@numFound='5']",
+        "//str[@name='id'][.='101']",
+        "//str[@name='id'][.='102']",
+        "//str[@name='id'][.='104']",
+        "//str[@name='id'][.='105']",
+        "//str[@name='id'][.='106']");
 
     // tests
 
     assertU(delQ("-*:*")); // NOOP
     assertU(commit());
-    assertQ(req("*:*")
-            ,"//*[@numFound='6']"
-            );
+    assertQ(req("*:*"), "//*[@numFound='6']");
 
     assertU(delQ("-text:grape -text:red"));
     assertU(commit());
-    assertQ(req("*:*")
-            ,"//*[@numFound='4']"
-            ,"//str[@name='id'][.='101']"
-            ,"//str[@name='id'][.='102']"
-            ,"//str[@name='id'][.='103']"
-            ,"//str[@name='id'][.='106']"
-            );
+    assertQ(
+        req("*:*"),
+        "//*[@numFound='4']",
+        "//str[@name='id'][.='101']",
+        "//str[@name='id'][.='102']",
+        "//str[@name='id'][.='103']",
+        "//str[@name='id'][.='106']");
 
     assertU(delQ("{!term f=id}106"));
     assertU(commit());
-    assertQ(req("*:*")
-            ,"//*[@numFound='3']"
-            ,"//str[@name='id'][.='101']"
-            ,"//str[@name='id'][.='102']"
-            ,"//str[@name='id'][.='103']"
-            );
+    assertQ(
+        req("*:*"),
+        "//*[@numFound='3']",
+        "//str[@name='id'][.='101']",
+        "//str[@name='id'][.='102']",
+        "//str[@name='id'][.='103']");
 
     assertU(delQ("-_val_:\"{!lucene q.op=AND df=text}grape green\""));
     assertU(commit());
-    assertQ(req("*:*")
-            ,"//*[@numFound='1']"
-            ,"//str[@name='id'][.='103']"
-            );
+    assertQ(req("*:*"), "//*[@numFound='1']", "//str[@name='id'][.='103']");
 
     assertU(delQ("-text:doesnotexist"));
     assertU(commit());
-    assertQ(req("*:*")
-            ,"//*[@numFound='0']"
-            );
-
+    assertQ(req("*:*"), "//*[@numFound='0']");
   }
 
   @Test
   public void testHTMLStrip() {
-    assertU(add(doc("id","200", "HTMLwhitetok","&#65;&#66;&#67;")));
-    assertU(add(doc("id","201", "HTMLwhitetok","&#65;B&#67;")));      // do it again to make sure reuse is working
+    assertU(add(doc("id", "200", "HTMLwhitetok", "&#65;&#66;&#67;")));
+    // do it again to make sure reuse is working
+    assertU(add(doc("id", "201", "HTMLwhitetok", "&#65;B&#67;")));
     assertU(commit());
-    assertQ(req("q","HTMLwhitetok:A&#66;C")
-        ,"//*[@numFound='2']"
-    );
-    assertQ(req("q","HTMLwhitetok:&#65;BC")
-        ,"//*[@numFound='2']"
-    );
+    assertQ(req("q", "HTMLwhitetok:A&#66;C"), "//*[@numFound='2']");
+    assertQ(req("q", "HTMLwhitetok:&#65;BC"), "//*[@numFound='2']");
   }
 
   @Test
@@ -351,48 +296,52 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     ignoreException(BAD_VALUE);
 
     final List<String> FIELDS = new LinkedList<>();
-    for (String type : new String[] {
-        "tdt", "tdt1", "tdtdv", "tdtdv1",
-        "dt_dv", "dt_dvo", "dt", "dt1", "dt_os"
-        }) {
+    for (String type :
+        new String[] {"tdt", "tdt1", "tdtdv", "tdtdv1", "dt_dv", "dt_dvo", "dt", "dt1", "dt_os"}) {
       FIELDS.add("malformed_" + type);
     }
 
     // test that malformed numerics cause client error not server error
     for (String field : FIELDS) {
-      SolrException e1 = expectThrows(SolrException.class,
-          "Didn't encounter an error trying to add a bad date: " + field,
-          () -> h.update(add( doc("id","100", field, BAD_VALUE))));
+      SolrException e1 =
+          expectThrows(
+              SolrException.class,
+              "Didn't encounter an error trying to add a bad date: " + field,
+              () -> h.update(add(doc("id", "100", field, BAD_VALUE))));
       String msg1 = e1.getMessage();
-      assertTrue("not an (update) client error on field: " + field +" : "+ msg1,
+      assertTrue(
+          "not an (update) client error on field: " + field + " : " + msg1,
           400 <= e1.code() && e1.code() < 500);
-      assertTrue("(update) client error does not mention bad value: " + msg1,
-          msg1.contains(BAD_VALUE));
-      assertTrue("client error does not mention document id: " + msg1,
-          msg1.contains("[doc=100]"));
+      assertTrue(
+          "(update) client error does not mention bad value: " + msg1, msg1.contains(BAD_VALUE));
+      assertTrue("client error does not mention document id: " + msg1, msg1.contains("[doc=100]"));
       SchemaField sf = h.getCore().getLatestSchema().getField(field);
       if (!sf.hasDocValues() && !sf.indexed()) {
         continue;
       }
-      SolrException e2 = expectThrows(SolrException.class,
-          "Didn't encounter an error trying to add a bad date: " + field,
-          () -> h.query(req("q",field + ":" + BAD_VALUE))
-      );
+      SolrException e2 =
+          expectThrows(
+              SolrException.class,
+              "Didn't encounter an error trying to add a bad date: " + field,
+              () -> h.query(req("q", field + ":" + BAD_VALUE)));
       String msg2 = e2.toString();
-      assertTrue("not a (search) client error on field: " + field +" : "+ msg2,
+      assertTrue(
+          "not a (search) client error on field: " + field + " : " + msg2,
           400 <= e2.code() && e2.code() < 500);
-      assertTrue("(search) client error does not mention bad value: " + msg2,
-          msg2.contains(BAD_VALUE));
-
-      SolrException e3 = expectThrows(SolrException.class,
-          "Didn't encounter an error trying to add a bad date: " + field,
-          () -> h.query(req("q",field + ":[NOW TO " + BAD_VALUE + "]"))
-      );
+      assertTrue(
+          "(search) client error does not mention bad value: " + msg2, msg2.contains(BAD_VALUE));
+
+      SolrException e3 =
+          expectThrows(
+              SolrException.class,
+              "Didn't encounter an error trying to add a bad date: " + field,
+              () -> h.query(req("q", field + ":[NOW TO " + BAD_VALUE + "]")));
       String msg3 = e3.toString();
-      assertTrue("not a (search) client error on field: " + field +" : "+ msg3,
+      assertTrue(
+          "not a (search) client error on field: " + field + " : " + msg3,
           400 <= e3.code() && e3.code() < 500);
-      assertTrue("(search) client error does not mention bad value: " + msg3,
-          msg3.contains(BAD_VALUE));
+      assertTrue(
+          "(search) client error does not mention bad value: " + msg3, msg3.contains(BAD_VALUE));
     }
   }
 
@@ -403,131 +352,140 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     ignoreException(BAD_VALUE);
 
     final List<String> FIELDS = new LinkedList<>();
-    for (String type : new String[] {
-        "ti", "tf", "td", "tl",
-        "i", "f", "d", "l",
-        "i_dv", "f_dv", "d_dv", "l_dv",
-        "i_dvo", "f_dvo", "d_dvo", "l_dvo",
-        "i_os", "f_os", "d_os", "l_os"
+    for (String type :
+        new String[] {
+          "ti", "tf", "td", "tl",
+          "i", "f", "d", "l",
+          "i_dv", "f_dv", "d_dv", "l_dv",
+          "i_dvo", "f_dvo", "d_dvo", "l_dvo",
+          "i_os", "f_os", "d_os", "l_os"
         }) {
       FIELDS.add("malformed_" + type);
     }
 
     // test that malformed numerics cause client error not server error
     for (String field : FIELDS) {
-      SolrException e1 = expectThrows(SolrException.class,
-          "Didn't encounter an error trying to add a non-number: " + field,
-          () -> h.update(add( doc("id","100", field, BAD_VALUE))));
+      SolrException e1 =
+          expectThrows(
+              SolrException.class,
+              "Didn't encounter an error trying to add a non-number: " + field,
+              () -> h.update(add(doc("id", "100", field, BAD_VALUE))));
       String msg1 = e1.toString();
-      assertTrue("not an (update) client error on field: " + field +" : "+ msg1,
+      assertTrue(
+          "not an (update) client error on field: " + field + " : " + msg1,
           400 <= e1.code() && e1.code() < 500);
-      assertTrue("(update) client error does not mention bad value: " + msg1,
-          msg1.contains(BAD_VALUE));
-      assertTrue("client error does not mention document id",
-          msg1.contains("[doc=100]"));
-      SchemaField sf = h.getCore().getLatestSchema().getField(field); 
+      assertTrue(
+          "(update) client error does not mention bad value: " + msg1, msg1.contains(BAD_VALUE));
+      assertTrue("client error does not mention document id", msg1.contains("[doc=100]"));
+      SchemaField sf = h.getCore().getLatestSchema().getField(field);
       if (!sf.hasDocValues() && !sf.indexed()) {
         continue;
       }
 
-      SolrException e2 = expectThrows(SolrException.class,
-          "Didn't encounter an error trying to add a non-number: " + field,
-          () -> h.query(req("q",field + ":" + BAD_VALUE))
-      );
+      SolrException e2 =
+          expectThrows(
+              SolrException.class,
+              "Didn't encounter an error trying to add a non-number: " + field,
+              () -> h.query(req("q", field + ":" + BAD_VALUE)));
       String msg2 = e2.toString();
-      assertTrue("not a (search) client error on field: " + field +" : "+ msg2,
+      assertTrue(
+          "not a (search) client error on field: " + field + " : " + msg2,
           400 <= e2.code() && e2.code() < 500);
-      assertTrue("(search) client error does not mention bad value: " + msg2,
-          msg2.contains(BAD_VALUE));
-
-      SolrException e3 = expectThrows(SolrException.class,
-          "Didn't encounter an error trying to add a non-number: " + field,
-          () -> h.query(req("q",field + ":[10 TO " + BAD_VALUE + "]"))
-      );
+      assertTrue(
+          "(search) client error does not mention bad value: " + msg2, msg2.contains(BAD_VALUE));
+
+      SolrException e3 =
+          expectThrows(
+              SolrException.class,
+              "Didn't encounter an error trying to add a non-number: " + field,
+              () -> h.query(req("q", field + ":[10 TO " + BAD_VALUE + "]")));
       String msg3 = e3.toString();
-      assertTrue("not a (search) client error on field: " + field +" : "+ msg3,
+      assertTrue(
+          "not a (search) client error on field: " + field + " : " + msg3,
           400 <= e3.code() && e3.code() < 500);
-      assertTrue("(search) client error does not mention bad value: " + msg3,
-          msg3.contains(BAD_VALUE));
+      assertTrue(
+          "(search) client error does not mention bad value: " + msg3, msg3.contains(BAD_VALUE));
     }
   }
-  
+
   @Test
   public void testRequestHandlerBaseException() {
     final String tmp = "BOO! ignore_exception";
-    SolrRequestHandler handler = new RequestHandlerBase() {
-      @Override
-      public Name getPermissionName(AuthorizationContext request) {
-        return Name.ALL;
-      }
-
-      @Override
-        public String getDescription() { return tmp; }
-        @Override
-        public void handleRequestBody
-          ( SolrQueryRequest req, SolrQueryResponse rsp ) {
-          throw new RuntimeException(tmp);
-        }
-      };
+    SolrRequestHandler handler =
+        new RequestHandlerBase() {
+          @Override
+          public Name getPermissionName(AuthorizationContext request) {
+            return Name.ALL;
+          }
+
+          @Override
+          public String getDescription() {
+            return tmp;
+          }
+
+          @Override
+          public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) {
+            throw new RuntimeException(tmp);
+          }
+        };
     handler.init(new NamedList<>());
     SolrQueryResponse rsp = new SolrQueryResponse();
     SolrQueryRequest req = req();
-    h.getCore().execute(handler, 
-                        req,
-                        rsp);
+    h.getCore().execute(handler, req, rsp);
     assertNotNull("should have found an exception", rsp.getException());
-    req.close();                    
+    req.close();
   }
 
   @Test
   public void testMultipleUpdatesPerAdd() {
     clearIndex();
     // big freaking kludge since the response is currently not well formed.
-    String res = h.update("<add><doc><field name=\"id\">1</field></doc><doc><field name=\"id\">2</field></doc></add>");
+    String res =
+        h.update(
+            "<add><doc><field name=\"id\">1</field></doc><doc><field name=\"id\">2</field></doc></add>");
     // assertEquals("<result status=\"0\"></result>", res);
     assertU("<commit/>");
-    assertQ(req("id:[0 TO 99]")
-            ,"//*[@numFound='2']"
-            );
-
+    assertQ(req("id:[0 TO 99]"), "//*[@numFound='2']");
   }
 
   @Test
   public void testDocBoost() throws Exception {
-    String res = h.update("<add>" + "<doc><field name=\"id\">1</field>"+
-                                          "<field name=\"text\">hello</field></doc>" + 
-                          "<doc boost=\"2.0\"><field name=\"id\">2</field>" +
-                                          "<field name=\"text\">hello</field></doc>" + 
-                          "</add>");
+    String res =
+        h.update(
+            "<add>"
+                + "<doc><field name=\"id\">1</field>"
+                + "<field name=\"text\">hello</field></doc>"
+                + "<doc boost=\"2.0\"><field name=\"id\">2</field>"
+                + "<field name=\"text\">hello</field></doc>"
+                + "</add>");
 
     // assertEquals("<result status=\"0\"></result>", res);
     assertU("<commit/>");
-    assertQ(req("text:hello")
-            ,"//*[@numFound='2']"
-            );
+    assertQ(req("text:hello"), "//*[@numFound='2']");
     String resp = h.query(lrf.makeRequest("q", "text:hello", CommonParams.DEBUG_QUERY, "true"));
-    //System.out.println(resp);
+    // System.out.println(resp);
     // second doc ranked first
-    assertTrue( resp.indexOf("\"2\"") < resp.indexOf("\"1\"") );
+    assertTrue(resp.indexOf("\"2\"") < resp.indexOf("\"1\""));
   }
 
   @Test
   public void testFieldBoost() throws Exception {
-    String res = h.update("<add>" + "<doc><field name=\"id\">1</field>"+
-                                      "<field name=\"text\">hello</field></doc>" + 
-                                    "<doc><field name=\"id\">2</field>" +
-                                      "<field boost=\"2.0\" name=\"text\">hello</field></doc>" + 
-                          "</add>");
+    String res =
+        h.update(
+            "<add>"
+                + "<doc><field name=\"id\">1</field>"
+                + "<field name=\"text\">hello</field></doc>"
+                + "<doc><field name=\"id\">2</field>"
+                + "<field boost=\"2.0\" name=\"text\">hello</field></doc>"
+                + "</add>");
 
     // assertEquals("<result status=\"0\"></result>", res);
     assertU("<commit/>");
-    assertQ(req("text:hello"),
-            "//*[@numFound='2']"
-            );
+    assertQ(req("text:hello"), "//*[@numFound='2']");
     String resp = h.query(lrf.makeRequest("q", "text:hello", CommonParams.DEBUG_QUERY, "true"));
-    //System.out.println(resp);
+    // System.out.println(resp);
     // second doc ranked first
-    assertTrue( resp.indexOf("\"2\"") < resp.indexOf("\"1\"") );
+    assertTrue(resp.indexOf("\"2\"") < resp.indexOf("\"1\""));
   }
 
   @Test
@@ -538,11 +496,10 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
 
     StringWriter writer = new StringWriter(32000);
     SolrQueryRequest req = req("foo");
-    XMLWriter.writeResponse(writer,req,rsp);
+    XMLWriter.writeResponse(writer, req, rsp);
 
     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-    builder.parse(new ByteArrayInputStream
-                  (writer.toString().getBytes(StandardCharsets.UTF_8)));
+    builder.parse(new ByteArrayInputStream(writer.toString().getBytes(StandardCharsets.UTF_8)));
     req.close();
   }
 
@@ -569,22 +526,21 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
   @Test
   public void testKeywordTokenizerFactory() {
 
-    assertU(adoc("id", "42",
-                 "keywordtok", "How nOw broWn-ish C.o.w. ?"));
+    assertU(
+        adoc(
+            "id", "42",
+            "keywordtok", "How nOw broWn-ish C.o.w. ?"));
     assertU(commit());
-    assertQ("stored value matches?",
-            req("id:42")
-            ,"//str[.='How nOw broWn-ish C.o.w. ?']"
-            );
-    assertQ("query on exact matches?",
-            req("keywordtok:\"How nOw broWn-ish C.o.w. ?\"")
-            ,"//str[.='How nOw broWn-ish C.o.w. ?']"
-            );
+    assertQ("stored value matches?", req("id:42"), "//str[.='How nOw broWn-ish C.o.w. ?']");
+    assertQ(
+        "query on exact matches?",
+        req("keywordtok:\"How nOw broWn-ish C.o.w. ?\""),
+        "//str[.='How nOw broWn-ish C.o.w. ?']");
   }
 
   @Test
   public void testTermVectorFields() {
-    
+
     IndexSchema ischema = IndexSchemaFactory.buildIndexSchema(getSchemaFile(), solrConfig);
     SchemaField f; // Solr field type
     IndexableField luf; // Lucene field
@@ -612,59 +568,66 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     f = ischema.getField("test_posofftv");
     luf = f.createField("test");
     assertTrue(f.storeTermVector() && f.storeTermPositions() && f.storeTermOffsets());
-    assertTrue(luf.fieldType().storeTermVectorOffsets() && luf.fieldType().storeTermVectorPositions());
+    assertTrue(
+        luf.fieldType().storeTermVectorOffsets() && luf.fieldType().storeTermVectorPositions());
 
     f = ischema.getField("test_posoffpaytv");
     luf = f.createField("test");
-    assertTrue(f.storeTermVector() && f.storeTermPositions() && f.storeTermOffsets() && f.storeTermPayloads());
-    assertTrue(luf.fieldType().storeTermVectorOffsets() && luf.fieldType().storeTermVectorPositions() && luf.fieldType().storeTermVectorPayloads());
-
+    assertTrue(
+        f.storeTermVector()
+            && f.storeTermPositions()
+            && f.storeTermOffsets()
+            && f.storeTermPayloads());
+    assertTrue(
+        luf.fieldType().storeTermVectorOffsets()
+            && luf.fieldType().storeTermVectorPositions()
+            && luf.fieldType().storeTermVectorPayloads());
   }
 
   @Test
   public void testSolrParams() throws Exception {
     NamedList<Object> nl = new NamedList<>();
-    nl.add("i",555);
-    nl.add("s","bbb");
-    nl.add("bt","true");
-    nl.add("bf","false");
+    nl.add("i", 555);
+    nl.add("s", "bbb");
+    nl.add("bt", "true");
+    nl.add("bf", "false");
 
-    Map<String,String> m = new HashMap<>();
+    Map<String, String> m = new HashMap<>();
     m.put("f.field1.i", "1000");
     m.put("s", "BBB");
     m.put("ss", "SSS");
 
-    LocalSolrQueryRequest req = new LocalSolrQueryRequest(null,nl);
+    LocalSolrQueryRequest req = new LocalSolrQueryRequest(null, nl);
     SolrParams p = req.getParams();
 
     assertEquals(p.get("i"), "555");
     assertEquals(p.getInt("i").intValue(), 555);
-    assertEquals(p.getInt("i",5), 555);
-    assertEquals(p.getInt("iii",5), 5);
-    assertEquals(p.getFieldParam("field1","i"), "555");
+    assertEquals(p.getInt("i", 5), 555);
+    assertEquals(p.getInt("iii", 5), 5);
+    assertEquals(p.getFieldParam("field1", "i"), "555");
 
     req.setParams(SolrParams.wrapDefaults(p, new MapSolrParams(m)));
     p = req.getParams();
     assertEquals(req.getOriginalParams().get("s"), "bbb");
     assertEquals(p.get("i"), "555");
     assertEquals(p.getInt("i").intValue(), 555);
-    assertEquals(p.getInt("i",5), 555);
-    assertEquals(p.getInt("iii",5), 5);
+    assertEquals(p.getInt("i", 5), 555);
+    assertEquals(p.getInt("iii", 5), 5);
 
-    assertEquals(p.getFieldParam("field1","i"), "1000");
+    assertEquals(p.getFieldParam("field1", "i"), "1000");
     assertEquals(p.get("s"), "bbb");
     assertEquals(p.get("ss"), "SSS");
 
     assertEquals(!!p.getBool("bt"), !p.getBool("bf"));
-    assertEquals(p.getBool("foo",true), true);
-    assertEquals(p.getBool("foo",false), false);
+    assertEquals(p.getBool("foo", true), true);
+    assertEquals(p.getBool("foo", false), false);
     assertEquals(!!p.getBool("bt"), !p.getBool("bf"));
 
     NamedList<String> more = new NamedList<>();
     more.add("s", "aaa");
     more.add("s", "ccc");
-    more.add("ss","YYY");
-    more.add("xx","XXX");
+    more.add("ss", "YYY");
+    more.add("xx", "XXX");
     p = SolrParams.wrapAppended(p, more.toSolrParams());
     assertEquals(3, p.getParams("s").length);
     assertEquals("bbb", p.getParams("s")[0]);
@@ -680,115 +643,120 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
   @Test
   public void testDefaultFieldValues() {
     clearIndex();
-    lrf.args.put(CommonParams.VERSION,"2.2");
-    assertU(adoc("id",  "4055",
-                 "subject", "Hoss the Hoss man Hostetter"));
-    assertU(adoc("id",  "4056",
-                 "intDefault", "4",
-                 "subject", "Some Other Guy"));
-    assertU(adoc("id",  "4057",
-                 "multiDefault", "a",
-                 "multiDefault", "b",
-                 "subject", "The Dude"));
+    lrf.args.put(CommonParams.VERSION, "2.2");
+    assertU(
+        adoc(
+            "id", "4055",
+            "subject", "Hoss the Hoss man Hostetter"));
+    assertU(
+        adoc(
+            "id", "4056",
+            "intDefault", "4",
+            "subject", "Some Other Guy"));
+    assertU(
+        adoc(
+            "id", "4057",
+            "multiDefault", "a",
+            "multiDefault", "b",
+            "subject", "The Dude"));
     assertU(commit());
 
-    assertQ("everthing should have recent timestamp",
-            req("timestamp:[NOW-10MINUTES TO NOW]")
-            ,"*[count(//doc)=3]"
-            ,"//date[@name='timestamp']"
-            );
-    
-    assertQ("2 docs should have the default for multiDefault",
-            req("multiDefault:muLti-Default")
-            ,"*[count(//doc)=2]"
-            ,"//arr[@name='multiDefault']"
-            );
-    assertQ("1 doc should have its explicit multiDefault",
-            req("multiDefault:a")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertQ("2 docs should have the default for intDefault",
-            req("intDefault:42")
-            ,"*[count(//doc)=2]"
-            );
-    assertQ("1 doc should have its explicit intDefault",
-            req("intDefault:[3 TO 5]")
-            ,"*[count(//doc)=1]"
-            );
-    
+    assertQ(
+        "everthing should have recent timestamp",
+        req("timestamp:[NOW-10MINUTES TO NOW]"),
+        "*[count(//doc)=3]",
+        "//date[@name='timestamp']");
+
+    assertQ(
+        "2 docs should have the default for multiDefault",
+        req("multiDefault:muLti-Default"),
+        "*[count(//doc)=2]",
+        "//arr[@name='multiDefault']");
+    assertQ(
+        "1 doc should have its explicit multiDefault", req("multiDefault:a"), "*[count(//doc)=1]");
+
+    assertQ(
+        "2 docs should have the default for intDefault", req("intDefault:42"), "*[count(//doc)=2]");
+    assertQ(
+        "1 doc should have its explicit intDefault",
+        req("intDefault:[3 TO 5]"),
+        "*[count(//doc)=1]");
   }
 
   @Test
   public void testTokenizer() {
 
-    assertU(adoc("id",  "4055",
-            "patterntok", "Hello,There"));
-    assertU(adoc("id",  "4056",
-            "patterntok", "Goodbye,Now"));
+    assertU(adoc("id", "4055", "patterntok", "Hello,There"));
+    assertU(adoc("id", "4056", "patterntok", "Goodbye,Now"));
     assertU(commit());
 
-    assertQ("make sure it split ok",
-            req("patterntok:Hello")
-            ,"*[count(//doc)=1]"
-    );
-    assertQ("make sure it split ok",
-            req("patterntok:Goodbye")
-            ,"*[count(//doc)=1]"
-    );
+    assertQ("make sure it split ok", req("patterntok:Hello"), "*[count(//doc)=1]");
+    assertQ("make sure it split ok", req("patterntok:Goodbye"), "*[count(//doc)=1]");
   }
 
   @Test
   public void testConfigDefaults() {
-    assertU(adoc("id", "42",
-                 "name", "Zapp Brannigan"));
-    assertU(adoc("id", "43",
-                 "title", "Democratic Order of Planets"));
-    assertU(adoc("id", "44",
-                 "name", "The Zapper"));
-    assertU(adoc("id", "45",
-                 "title", "25 star General"));
-    assertU(adoc("id", "46",
-                 "subject", "Defeated the pacifists of the Gandhi nebula"));
-    assertU(adoc("id", "47",
-                 "text", "line up and fly directly at the enemy death cannons, clogging them with wreckage!"));
+    assertU(
+        adoc(
+            "id", "42",
+            "name", "Zapp Brannigan"));
+    assertU(
+        adoc(
+            "id", "43",
+            "title", "Democratic Order of Planets"));
+    assertU(
+        adoc(
+            "id", "44",
+            "name", "The Zapper"));
+    assertU(
+        adoc(
+            "id", "45",
+            "title", "25 star General"));
+    assertU(
+        adoc(
+            "id", "46",
+            "subject", "Defeated the pacifists of the Gandhi nebula"));
+    assertU(
+        adoc(
+            "id", "47",
+            "text",
+                "line up and fly directly at the enemy death cannons, clogging them with wreckage!"));
     assertU(commit());
 
-    assertQ("standard request handler returns all matches",
-            req("id:[42 TO 47]"),
-            "*[count(//doc)=6]"
-            );
-
-    assertQ("defaults handler returns fewer matches",
-            req("q", "id:[42 TO 47]",   "qt","/defaults"),
-            "*[count(//doc)=4]"
-            );
+    assertQ(
+        "standard request handler returns all matches", req("id:[42 TO 47]"), "*[count(//doc)=6]");
 
-    assertQ("defaults handler includes highlighting",
-            req("q", "name:Zapp OR title:General",   "qt","/defaults"),
-            "//lst[@name='highlighting']"
-            );
+    assertQ(
+        "defaults handler returns fewer matches",
+        req("q", "id:[42 TO 47]", "qt", "/defaults"),
+        "*[count(//doc)=4]");
 
+    assertQ(
+        "defaults handler includes highlighting",
+        req("q", "name:Zapp OR title:General", "qt", "/defaults"),
+        "//lst[@name='highlighting']");
   }
 
   private String mkstr(int len) {
     StringBuilder sb = new StringBuilder(len);
     for (int i = 0; i < len; i++) {
-      sb.append((char)(65 + i%26));
+      sb.append((char) (65 + i % 26));
     }
     return new String(sb);
-  }   
+  }
 
   @Test
   public void testNotLazyField() throws IOException {
 
-    assertU(adoc("id", "7777",
-                 "title", "keyword",
-                 "test_hlt", mkstr(20000)));
+    assertU(
+        adoc(
+            "id", "7777",
+            "title", "keyword",
+            "test_hlt", mkstr(20000)));
 
     assertU(commit());
     SolrCore core = h.getCore();
-   
+
     SolrQueryRequest req = req("q", "id:7777", "fl", "id,title,test_hlt");
     SolrQueryResponse rsp = new SolrQueryResponse();
     core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
@@ -796,42 +764,44 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     DocList dl = ((ResultContext) rsp.getResponse()).getDocList();
     Document d = req.getSearcher().doc(dl.iterator().nextDoc());
     // ensure field in fl is not lazy
-    assertFalse( ((Field) d.getField("test_hlt")).getClass().getSimpleName().equals("LazyField"));
-    assertFalse( ((Field) d.getField("title")).getClass().getSimpleName().equals("LazyField"));
+    assertFalse(((Field) d.getField("test_hlt")).getClass().getSimpleName().equals("LazyField"));
+    assertFalse(((Field) d.getField("title")).getClass().getSimpleName().equals("LazyField"));
     req.close();
   }
 
   @Test
   public void testLazyField() throws IOException {
-    assertU(adoc("id", "7777",
-                 "title", "keyword",
-                 "test_hlt", mkstr(10000),
-                 "test_hlt", mkstr(20000),
-                 "test_hlt", mkstr(30000),
-                 "test_hlt", mkstr(40000)));
+    assertU(
+        adoc(
+            "id", "7777",
+            "title", "keyword",
+            "test_hlt", mkstr(10000),
+            "test_hlt", mkstr(20000),
+            "test_hlt", mkstr(30000),
+            "test_hlt", mkstr(40000)));
 
     assertU(commit());
     SolrCore core = h.getCore();
-    
+
     // initial request
     SolrQueryRequest req = req("q", "id:7777", "fl", "id,title");
     SolrQueryResponse rsp = new SolrQueryResponse();
     core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
 
     DocList dl = ((ResultContext) rsp.getResponse()).getDocList();
-    DocIterator di = dl.iterator();    
+    DocIterator di = dl.iterator();
     Document d1 = req.getSearcher().doc(di.nextDoc());
     IndexableField[] values1 = null;
 
     // ensure fl field is non lazy, and non-fl field is lazy
-    assertFalse( d1.getField("title") instanceof LazyDocument.LazyField);
-    assertFalse( d1.getField("id") instanceof LazyDocument.LazyField);
+    assertFalse(d1.getField("title") instanceof LazyDocument.LazyField);
+    assertFalse(d1.getField("id") instanceof LazyDocument.LazyField);
     values1 = d1.getFields("test_hlt");
     assertEquals(4, values1.length);
     for (int i = 0; i < values1.length; i++) {
-      assertTrue( values1[i] instanceof LazyDocument.LazyField );
+      assertTrue(values1[i] instanceof LazyDocument.LazyField);
       LazyDocument.LazyField f = (LazyDocument.LazyField) values1[i];
-      assertFalse( f.hasBeenLoaded() );
+      assertFalse(f.hasBeenLoaded());
     }
     req.close();
 
@@ -841,18 +811,17 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     core.execute(core.getRequestHandler(req.getParams().get(CommonParams.QT)), req, rsp);
 
     dl = ((ResultContext) rsp.getResponse()).getDocList();
-    di = dl.iterator();    
+    di = dl.iterator();
     Document d2 = req.getSearcher().doc(di.nextDoc());
     // ensure same doc, same lazy field now
     assertTrue("Doc was not cached", d1 == d2);
     IndexableField[] values2 = d2.getFields("test_hlt");
     assertEquals(values1.length, values2.length);
     for (int i = 0; i < values1.length; i++) {
-      assertSame("LazyField wasn't reused", 
-                 values1[i], values2[i]);
+      assertSame("LazyField wasn't reused", values1[i], values2[i]);
       LazyDocument.LazyField f = (LazyDocument.LazyField) values1[i];
       // still not a real boy, no response writer in play
-      assertFalse(f.hasBeenLoaded()); 
+      assertFalse(f.hasBeenLoaded());
     }
 
     assertNotNull(values2[0].stringValue()); // actuallize one value
@@ -863,8 +832,7 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     }
 
     req.close();
-  } 
-            
+  }
 
   /** @see org.apache.solr.util.DateMathParserTest */
   @Test
@@ -879,14 +847,14 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     // assuming the test doesn't take too long to run...
 
     final String july4 = "1976-07-04T12:08:56.235Z";
-    assertU(adoc("id", "1",  "bday", july4));
-    assertU(adoc("id", "2",  "bday", "NOW"));
-    assertU(adoc("id", "3",  "bday", "NOW/HOUR"));
-    assertU(adoc("id", "4",  "bday", "NOW-30MINUTES"));
-    assertU(adoc("id", "5",  "bday", "NOW+30MINUTES"));
-    assertU(adoc("id", "6",  "bday", "NOW+2YEARS"));
+    assertU(adoc("id", "1", "bday", july4));
+    assertU(adoc("id", "2", "bday", "NOW"));
+    assertU(adoc("id", "3", "bday", "NOW/HOUR"));
+    assertU(adoc("id", "4", "bday", "NOW-30MINUTES"));
+    assertU(adoc("id", "5", "bday", "NOW+30MINUTES"));
+    assertU(adoc("id", "6", "bday", "NOW+2YEARS"));
     assertU(commit());
-    
+
     // a ridiculoulsy long date math expression that's still equivalent to july4
     final StringBuilder july4Long = new StringBuilder(july4);
     final int iters = atLeast(10);
@@ -896,153 +864,166 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
     }
 
     // term queries using date math (all of these should match doc#1)
-    for (String q : 
-           new String[] {
-             "bday:1976-07-04T12\\:08\\:56.45Z/SECOND+235MILLIS",
-             "bday:1976-07-04T12\\:08\\:56.123Z/MINUTE+56SECONDS+235MILLIS",
-             "bday:\"1976-07-04T12:08:56.45Z/SECOND+235MILLIS\"",
-             "bday:\"1976-07-04T12:08:56.123Z/MINUTE+56SECONDS+235MILLIS\"",
-             "{!term f=bday}1976-07-04T12:08:56.45Z/SECOND+235MILLIS",
-             "{!term f=bday}1976-07-04T12:08:56.123Z/MINUTE+56SECONDS+235MILLIS",             
-             "{!term f=bday}"+july4,
-             "{!term f=bday}"+july4Long,
-             "bday:\"" + july4Long + "\""
-           }) {
-      assertQ("check math on field query: " + q,
-              req("q", q),
-              "*[count(//doc)=1]",
-              "//str[@name='id'][.='1']");
+    for (String q :
+        new String[] {
+          "bday:1976-07-04T12\\:08\\:56.45Z/SECOND+235MILLIS",
+          "bday:1976-07-04T12\\:08\\:56.123Z/MINUTE+56SECONDS+235MILLIS",
+          "bday:\"1976-07-04T12:08:56.45Z/SECOND+235MILLIS\"",
+          "bday:\"1976-07-04T12:08:56.123Z/MINUTE+56SECONDS+235MILLIS\"",
+          "{!term f=bday}1976-07-04T12:08:56.45Z/SECOND+235MILLIS",
+          "{!term f=bday}1976-07-04T12:08:56.123Z/MINUTE+56SECONDS+235MILLIS",
+          "{!term f=bday}" + july4,
+          "{!term f=bday}" + july4Long,
+          "bday:\"" + july4Long + "\""
+        }) {
+      assertQ(
+          "check math on field query: " + q,
+          req("q", q),
+          "*[count(//doc)=1]",
+          "//str[@name='id'][.='1']");
     }
 
     // range queries using date math
-    assertQ("check math on absolute date#1",
-            req("q", "bday:[* TO "+july4+"/SECOND]"),
-            "*[count(//doc)=0]");
-    assertQ("check math on absolute date#2",
-            req("q", "bday:[* TO "+july4+"/SECOND+1SECOND]"),
-            "*[count(//doc)=1]");
-    assertQ("check math on absolute date#3",
-            req("q", "bday:["+july4+"/SECOND TO "+july4+"/SECOND+1SECOND]"),
-            "*[count(//doc)=1]");
-    assertQ("check math on absolute date#4",
-            req("q", "bday:["+july4+"/MINUTE+1MINUTE TO *]"),
-            "*[count(//doc)=5]");
-    
-    assertQ("check count for before now",
-            req("q", "bday:[* TO NOW]"), "*[count(//doc)=4]");
-
-    assertQ("check count for after now",
-            req("q", "bday:[NOW TO *]"), "*[count(//doc)=2]");
-
-    assertQ("check count for old stuff",
-            req("q", "bday:[* TO NOW-2YEARS]"), "*[count(//doc)=1]");
-
-    assertQ("check count for future stuff",
-            req("q", "bday:[NOW+1MONTH TO *]"), "*[count(//doc)=1]");
-
-    assertQ("check count for near stuff",
-            req("q", "bday:[NOW-1MONTH TO NOW+2HOURS]"), "*[count(//doc)=4]");
-    
-    assertQ("check counts using fixed NOW",
-            req("q", "bday:[NOW/DAY TO NOW/DAY+1DAY]",
-                "NOW", "205369736000" // 1976-07-04T23:08:56.235Z
-                ),
-            "*[count(//doc)=1]");
-                
-    assertQ("check counts using fixed NOW and TZ rounding",
-            req("q", "bday:[NOW/DAY TO NOW/DAY+1DAY]",
-                "TZ", "GMT+01",
-                "NOW", "205369736000" // 1976-07-04T23:08:56.235Z
-                ),
-            "*[count(//doc)=0]");
-
+    assertQ(
+        "check math on absolute date#1",
+        req("q", "bday:[* TO " + july4 + "/SECOND]"),
+        "*[count(//doc)=0]");
+    assertQ(
+        "check math on absolute date#2",
+        req("q", "bday:[* TO " + july4 + "/SECOND+1SECOND]"),
+        "*[count(//doc)=1]");
+    assertQ(
+        "check math on absolute date#3",
+        req("q", "bday:[" + july4 + "/SECOND TO " + july4 + "/SECOND+1SECOND]"),
+        "*[count(//doc)=1]");
+    assertQ(
+        "check math on absolute date#4",
+        req("q", "bday:[" + july4 + "/MINUTE+1MINUTE TO *]"),
+        "*[count(//doc)=5]");
+
+    assertQ("check count for before now", req("q", "bday:[* TO NOW]"), "*[count(//doc)=4]");
+
+    assertQ("check count for after now", req("q", "bday:[NOW TO *]"), "*[count(//doc)=2]");
+
+    assertQ("check count for old stuff", req("q", "bday:[* TO NOW-2YEARS]"), "*[count(//doc)=1]");
+
+    assertQ(
+        "check count for future stuff", req("q", "bday:[NOW+1MONTH TO *]"), "*[count(//doc)=1]");
+
+    assertQ(
+        "check count for near stuff",
+        req("q", "bday:[NOW-1MONTH TO NOW+2HOURS]"),
+        "*[count(//doc)=4]");
+
+    assertQ(
+        "check counts using fixed NOW",
+        req(
+            "q", "bday:[NOW/DAY TO NOW/DAY+1DAY]",
+            "NOW", "205369736000" // 1976-07-04T23:08:56.235Z
+            ),
+        "*[count(//doc)=1]");
+
+    assertQ(
+        "check counts using fixed NOW and TZ rounding",
+        req(
+            "q", "bday:[NOW/DAY TO NOW/DAY+1DAY]",
+            "TZ", "GMT+01",
+            "NOW", "205369736000" // 1976-07-04T23:08:56.235Z
+            ),
+        "*[count(//doc)=0]");
   }
 
   // commented after SOLR-8904; both are false
-//  public void testDateRoundtrip() {
-//    assertU(adoc("id", "99",  "bday", "99-01-01T12:34:56.789Z"));
-//    assertU(commit());
-//    assertQ("year should be canonicallized to 4 digits",
-//            req("q", "id:99"),
-//            "//date[@name='bday'][.='0099-01-01T12:34:56.789Z']");
-//    assertU(adoc("id", "99",  "bday", "1999-01-01T12:34:56.900Z"));
-//    assertU(commit());
-//    assertQ("millis should be canonicallized to no trailing zeros",
-//            req("q", "id:99"),
-//            "//date[@name='bday'][.='1999-01-01T12:34:56.9Z']");
-//  }
-  
+  //  public void testDateRoundtrip() {
+  //    assertU(adoc("id", "99",  "bday", "99-01-01T12:34:56.789Z"));
+  //    assertU(commit());
+  //    assertQ("year should be canonicallized to 4 digits",
+  //            req("q", "id:99"),
+  //            "//date[@name='bday'][.='0099-01-01T12:34:56.789Z']");
+  //    assertU(adoc("id", "99",  "bday", "1999-01-01T12:34:56.900Z"));
+  //    assertU(commit());
+  //    assertQ("millis should be canonicallized to no trailing zeros",
+  //            req("q", "id:99"),
+  //            "//date[@name='bday'][.='1999-01-01T12:34:56.9Z']");
+  //  }
+
   @Test
   public void testPatternReplaceFilter() {
 
-    assertU(adoc("id", "1",
-                 "patternreplacefilt", "My  fine-feathered friend!"));
-    assertU(adoc("id", "2",
-                 "patternreplacefilt", "  What's Up Doc?"));
+    assertU(
+        adoc(
+            "id", "1",
+            "patternreplacefilt", "My  fine-feathered friend!"));
+    assertU(
+        adoc(
+            "id", "2",
+            "patternreplacefilt", "  What's Up Doc?"));
     assertU(commit());
- 
-    assertQ("don't find Up",
-            req("q", "patternreplacefilt:Up"),
-            "*[count(//doc)=0]");
-    
-    assertQ("find doc",
-            req("q", "patternreplacefilt:__What_s_Up_Doc_"),
-            "*[count(//doc)=1]");
-
-    assertQ("find birds",
-            req("q", "patternreplacefilt:My__fine_feathered_friend_"),
-            "*[count(//doc)=1]");
+
+    assertQ("don't find Up", req("q", "patternreplacefilt:Up"), "*[count(//doc)=0]");
+
+    assertQ("find doc", req("q", "patternreplacefilt:__What_s_Up_Doc_"), "*[count(//doc)=1]");
+
+    assertQ(
+        "find birds",
+        req("q", "patternreplacefilt:My__fine_feathered_friend_"),
+        "*[count(//doc)=1]");
   }
 
   @Test
   public void testAbuseOfSort() {
 
-    assertU(adoc("id", "9999991",
-                 "sortabuse_not_uninvertible", "xxx",
-                 "sortabuse_t", "zzz xxx ccc vvv bbb nnn aaa sss ddd fff ggg"));
-    assertU(adoc("id", "9999992",
-                 "sortabuse_not_uninvertible", "yyy",
-                 "sortabuse_t", "zzz xxx ccc vvv bbb nnn qqq www eee rrr ttt"));
+    assertU(
+        adoc(
+            "id", "9999991",
+            "sortabuse_not_uninvertible", "xxx",
+            "sortabuse_t", "zzz xxx ccc vvv bbb nnn aaa sss ddd fff ggg"));
+    assertU(
+        adoc(
+            "id", "9999992",
+            "sortabuse_not_uninvertible", "yyy",
+            "sortabuse_t", "zzz xxx ccc vvv bbb nnn qqq www eee rrr ttt"));
 
     assertU(commit());
 
     for (String f : Arrays.asList("sortabuse_not_uninvertible", "sortabuse_t")) {
-      RuntimeException outerEx = expectThrows(RuntimeException.class, () -> {
-          ignoreException("sortabuse");
-          assertQ("sort on something that shouldn't work",
-                  req("q", "*:*",
-                      "sort", f+ " asc"),
-                  "*[count(//doc)=2]");
-        });
+      RuntimeException outerEx =
+          expectThrows(
+              RuntimeException.class,
+              () -> {
+                ignoreException("sortabuse");
+                assertQ(
+                    "sort on something that shouldn't work",
+                    req("q", "*:*", "sort", f + " asc"),
+                    "*[count(//doc)=2]");
+              });
       Throwable root = getRootCause(outerEx);
-      assertEquals("sort exception root cause",
-                   SolrException.class, root.getClass());
+      assertEquals("sort exception root cause", SolrException.class, root.getClass());
       SolrException e = (SolrException) root;
-      assertEquals("incorrect error type",
-                   SolrException.ErrorCode.BAD_REQUEST,
-                   SolrException.ErrorCode.getErrorCode(e.code()));
-      assertTrue("exception doesn't contain field name",
-                 e.getMessage().contains(f));
+      assertEquals(
+          "incorrect error type",
+          SolrException.ErrorCode.BAD_REQUEST,
+          SolrException.ErrorCode.getErrorCode(e.code()));
+      assertTrue("exception doesn't contain field name", e.getMessage().contains(f));
     }
   }
-  
-//   /** this doesn't work, but if it did, this is how we'd test it. */
-//   public void testOverwriteFalse() {
-
-//     assertU(adoc("id", "overwrite", "val_s", "AAA"));
-//     assertU(commit());
-
-//     assertU(add(doc("id", "overwrite", "val_s", "BBB")
-//                 ,"allowDups", "false"
-//                 ,"overwriteCommitted","false"
-//                 ,"overwritePending","false"
-//                 ));
-//     assertU(commit());
-//     assertQ(req("id:overwrite")
-//             ,"//*[@numFound='1']"
-//             ,"//str[.='AAA']"
-//             );
-//   }
 
+  //   /** this doesn't work, but if it did, this is how we'd test it. */
+  //   public void testOverwriteFalse() {
+
+  //     assertU(adoc("id", "overwrite", "val_s", "AAA"));
+  //     assertU(commit());
+
+  //     assertU(add(doc("id", "overwrite", "val_s", "BBB")
+  //                 ,"allowDups", "false"
+  //                 ,"overwriteCommitted","false"
+  //                 ,"overwritePending","false"
+  //                 ));
+  //     assertU(commit());
+  //     assertQ(req("id:overwrite")
+  //             ,"//*[@numFound='1']"
+  //             ,"//str[.='AAA']"
+  //             );
+  //   }
 
 }
diff --git a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
index 1ba28ee..c439a7c 100644
--- a/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
+++ b/solr/core/src/test/org/apache/solr/ConvertedLegacyTest.java
@@ -16,34 +16,31 @@
  */
 package org.apache.solr;
 
+import java.util.*;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.request.*;
 import org.apache.solr.util.ErrorLogMuter;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.*;
-
-    
 /**
  * This tests was converted from a legacy testing system.
  *
- * it does not represent the best practices that should be used when
- * writing Solr JUnit tests
+ * <p>it does not represent the best practices that should be used when writing Solr JUnit tests
  */
 public class ConvertedLegacyTest extends SolrTestCaseJ4 {
 
   @BeforeClass
   public static void beforeTests() throws Exception {
-    initCore("solrconfig.xml","schema.xml");
+    initCore("solrconfig.xml", "schema.xml");
   }
 
   @Test
   public void testABunchOfConvertedStuff() {
     // these may be reused by things that need a special query
     SolrQueryRequest req = null;
-    Map<String,String> args = new HashMap<>();
-    lrf.args.put(CommonParams.VERSION,"2.2");
+    Map<String, String> args = new HashMap<>();
+    lrf.args.put(CommonParams.VERSION, "2.2");
 
     // compact the index, keep things from getting out of hand
 
@@ -51,26 +48,17 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
 
     // test query
 
-    assertQ(req("qlkciyopsbgzyvkylsjhchghjrdf")
-            ,"//result[@numFound='0']"
-            );
+    assertQ(req("qlkciyopsbgzyvkylsjhchghjrdf"), "//result[@numFound='0']");
 
     // test escaping of ";"
 
     assertU("<delete><id>42</id></delete>");
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"val_s\">aa;bb</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"val_s\">aa;bb</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:42 AND val_s:aa\\;bb")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:42 AND val_s:\"aa;bb\"")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:42 AND val_s:\"aa\"")
-            ,"//*[@numFound='0']"
-            );
-
-
+    assertQ(req("id:42 AND val_s:aa\\;bb"), "//*[@numFound='1']");
+    assertQ(req("id:42 AND val_s:\"aa;bb\""), "//*[@numFound='1']");
+    assertQ(req("id:42 AND val_s:\"aa\""), "//*[@numFound='0']");
 
     // test allowDups default of false
 
@@ -78,17 +66,11 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     assertU("<add><doc><field name=\"id\">42</field><field name=\"val_s\">AAA</field></doc></add>");
     assertU("<add><doc><field name=\"id\">42</field><field name=\"val_s\">BBB</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:42")
-            ,"//*[@numFound='1'] "
-            ,"//str[.='BBB']"
-            );
+    assertQ(req("id:42"), "//*[@numFound='1'] ", "//str[.='BBB']");
     assertU("<add><doc><field name=\"id\">42</field><field name=\"val_s\">CCC</field></doc></add>");
     assertU("<add><doc><field name=\"id\">42</field><field name=\"val_s\">DDD</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:42")
-            ,"//*[@numFound='1'] "
-            ,"//str[.='DDD']"
-            );
+    assertQ(req("id:42"), "//*[@numFound='1'] ", "//str[.='DDD']");
     assertU("<delete><id>42</id></delete>");
 
     // test deletes
@@ -101,910 +83,663 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     assertU("<add overwrite=\"false\"><doc><field name=\"id\">103</field></doc></add>");
     assertU("<add overwrite=\"true\"><doc><field name=\"id\">101</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='4']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='4']");
     assertU("<delete><id>102</id></delete>");
     assertU("<commit/>");
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='3']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='3']");
     assertU("<delete><query>id:105</query></delete>");
     assertU("<commit/>");
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='2']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='2']");
     assertU("<delete><query>id:[100 TO 110]</query></delete>");
     assertU("<commit/>");
-    assertQ(req("id:[100 TO 110]")
-            ,"//*[@numFound='0']"
-            );
+    assertQ(req("id:[100 TO 110]"), "//*[@numFound='0']");
 
     // test range
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s1\">apple</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">banana</field><field name=\"val_s1\">banana</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">pear</field><field name=\"val_s1\">pear</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("val_s:[a TO z]")
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=3] "
-            ,"//*[@start='0']"
-            );
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s1\">apple</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">banana</field><field name=\"val_s1\">banana</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">pear</field><field name=\"val_s1\">pear</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("val_s:[a TO z]"), "//*[@numFound='3'] ", "*[count(//doc)=3] ", "//*[@start='0']");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 2, 5 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=1] "
-            ,"*//doc[1]/str[.='pear'] "
-            ,"//*[@start='2']"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 2, 5, args);
+    assertQ(
+        req,
+        "//*[@numFound='3'] ",
+        "*[count(//doc)=1] ",
+        "*//doc[1]/str[.='pear'] ",
+        "//*[@start='2']");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 3, 5 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 3, 5, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 4, 5 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 4, 5, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 25, 5 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 25, 5, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 0, 1 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=1] "
-            ,"*//doc[1]/str[.='apple']"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 1, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=1] ", "*//doc[1]/str[.='apple']");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 0, 2 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=2] "
-            ,"*//doc[2]/str[.='banana']"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 2, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=2] ", "*//doc[2]/str[.='banana']");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 1, 1 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=1] "
-            ,"*//doc[1]/str[.='banana']"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 1, 1, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=1] ", "*//doc[1]/str[.='banana']");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 3, 1 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 3, 1, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 4, 1 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 4, 1, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 1, 0 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 1, 0, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 0, 0 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 0, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    args.put("sort","val_s1 asc");
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 0, 0 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
+    args.put("sort", "val_s1 asc");
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 0, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
     args = new HashMap<>();
-    args.put("sort","val_s1 desc");
-    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]",
-                                    "/select", 0, 0 , args);
-    assertQ(req
-            ,"//*[@numFound='3'] "
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("val_s:[a TO b]")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("val_s:[a TO cat]")
-            ,"//*[@numFound='2']"
-            );
-    assertQ(req("val_s:[a TO *]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:[* TO z]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:[* TO *]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:[apple TO pear]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:[bear TO boar]")
-            ,"//*[@numFound='0']"
-            );
-    assertQ(req("val_s:[a TO a]")
-            ,"//*[@numFound='0']"
-            );
-    assertQ(req("val_s:[apple TO apple]")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("val_s:{apple TO pear}")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("val_s:{a TO z}")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:{* TO *}")
-            ,"//*[@numFound='3']"
-            );
+    args.put("sort", "val_s1 desc");
+    req = new LocalSolrQueryRequest(h.getCore(), "val_s:[a TO z]", "/select", 0, 0, args);
+    assertQ(req, "//*[@numFound='3'] ", "*[count(//doc)=0]");
+    assertQ(req("val_s:[a TO b]"), "//*[@numFound='1']");
+    assertQ(req("val_s:[a TO cat]"), "//*[@numFound='2']");
+    assertQ(req("val_s:[a TO *]"), "//*[@numFound='3']");
+    assertQ(req("val_s:[* TO z]"), "//*[@numFound='3']");
+    assertQ(req("val_s:[* TO *]"), "//*[@numFound='3']");
+    assertQ(req("val_s:[apple TO pear]"), "//*[@numFound='3']");
+    assertQ(req("val_s:[bear TO boar]"), "//*[@numFound='0']");
+    assertQ(req("val_s:[a TO a]"), "//*[@numFound='0']");
+    assertQ(req("val_s:[apple TO apple]"), "//*[@numFound='1']");
+    assertQ(req("val_s:{apple TO pear}"), "//*[@numFound='1']");
+    assertQ(req("val_s:{a TO z}"), "//*[@numFound='3']");
+    assertQ(req("val_s:{* TO *}"), "//*[@numFound='3']");
     // test rangequery within a boolean query
 
-    assertQ(req("id:44 AND val_s:[a TO z]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("id:44 OR val_s:[a TO z]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:[a TO b] OR val_s:[b TO z]")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("+val_s:[a TO b] -val_s:[b TO z]")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("-val_s:[a TO b] +val_s:[b TO z]")
-            ,"//*[@numFound='2']"
-            );
-    assertQ(req("val_s:[a TO c] AND val_s:[apple TO z]")
-            ,"//*[@numFound='2']"
-            );
-    assertQ(req("val_s:[a TO c] AND val_s:[a TO apple]")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:44 AND (val_s:[a TO c] AND val_s:[a TO apple])")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("(val_s:[apple TO apple] OR val_s:[a TO c]) AND (val_s:[b TO c] OR val_s:[b TO b])")
-            ,"//*[@numFound='1'] "
-            ,"//str[.='banana']"
-            );
-    assertQ(req("(val_s:[apple TO apple] AND val_s:[a TO c]) OR (val_s:[p TO z] AND val_s:[a TO z])")
-            ,"//*[@numFound='2'] "
-            ,"//str[.='apple'] "
-            ,"//str[.='pear']"
-            );
+    assertQ(req("id:44 AND val_s:[a TO z]"), "//*[@numFound='3']");
+    assertQ(req("id:44 OR val_s:[a TO z]"), "//*[@numFound='3']");
+    assertQ(req("val_s:[a TO b] OR val_s:[b TO z]"), "//*[@numFound='3']");
+    assertQ(req("+val_s:[a TO b] -val_s:[b TO z]"), "//*[@numFound='1']");
+    assertQ(req("-val_s:[a TO b] +val_s:[b TO z]"), "//*[@numFound='2']");
+    assertQ(req("val_s:[a TO c] AND val_s:[apple TO z]"), "//*[@numFound='2']");
+    assertQ(req("val_s:[a TO c] AND val_s:[a TO apple]"), "//*[@numFound='1']");
+    assertQ(req("id:44 AND (val_s:[a TO c] AND val_s:[a TO apple])"), "//*[@numFound='1']");
+    assertQ(
+        req("(val_s:[apple TO apple] OR val_s:[a TO c]) AND (val_s:[b TO c] OR val_s:[b TO b])"),
+        "//*[@numFound='1'] ",
+        "//str[.='banana']");
+    assertQ(
+        req("(val_s:[apple TO apple] AND val_s:[a TO c]) OR (val_s:[p TO z] AND val_s:[a TO z])"),
+        "//*[@numFound='2'] ",
+        "//str[.='apple'] ",
+        "//str[.='pear']");
 
     // check for docs that appear more than once in a range
 
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s\">banana</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"val_s\">apple</field><field name=\"val_s\">banana</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("val_s:[* TO *] OR  val_s:[* TO *]")
-            ,"//*[@numFound='4']"
-            );
-    assertQ(req("val_s:[* TO *] AND  val_s:[* TO *]")
-            ,"//*[@numFound='4']"
-            );
-    assertQ(req("val_s:[* TO *]")
-            ,"//*[@numFound='4']"
-            );
-
+    assertQ(req("val_s:[* TO *] OR  val_s:[* TO *]"), "//*[@numFound='4']");
+    assertQ(req("val_s:[* TO *] AND  val_s:[* TO *]"), "//*[@numFound='4']");
+    assertQ(req("val_s:[* TO *]"), "//*[@numFound='4']");
 
     // <delete><id>44</id></delete>
 
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44 AND red")
-            ,"//@numFound[.='1'] "
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:44 AND ride")
-            ,"//@numFound[.='1']"
-            );
-    assertQ(req("id:44 AND blue")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(req("id:44 AND red"), "//@numFound[.='1'] ", "*[count(//doc)=1]");
+    assertQ(req("id:44 AND ride"), "//@numFound[.='1']");
+    assertQ(req("id:44 AND blue"), "//@numFound[.='0']");
 
     // allow duplicates
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">big bad wolf</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">red riding hood</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"text\">big bad wolf</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//@numFound[.='2']"
-            );
-    assertQ(req("id:44 AND red")
-            ,"//@numFound[.='1'] "
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:44 AND wolf")
-            ,"//@numFound[.='1'] "
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("+id:44 red wolf")
-            ,"//@numFound[.='2']"
-            );
+    assertQ(req("id:44"), "//@numFound[.='2']");
+    assertQ(req("id:44 AND red"), "//@numFound[.='1'] ", "*[count(//doc)=1]");
+    assertQ(req("id:44 AND wolf"), "//@numFound[.='1'] ", "*[count(//doc)=1]");
+    assertQ(req("+id:44 red wolf"), "//@numFound[.='2']");
 
     // test removal of multiples w/o adding anything else
 
     assertU("<delete><id>44</id></delete>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(req("id:44"), "//@numFound[.='0']");
 
     // untokenized string type
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"ssto\">and a 10.4 ?</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"ssto\">and a 10.4 ?</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//str[.='and a 10.4 ?']"
-            );
+    assertQ(req("id:44"), "//str[.='and a 10.4 ?']");
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"sind\">abc123</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"sind\">abc123</field></doc></add>");
     assertU("<commit/>");
     // TODO: how to search for something with spaces....
 
-    assertQ(req("sind:abc123")
-            ,"//@numFound[.='1'] "
-            ,"*[count(//@name[.='sind'])=0] "
-            ,"*[count(//@name[.='id'])=1]"
-            );
+    assertQ(
+        req("sind:abc123"),
+        "//@numFound[.='1'] ",
+        "*[count(//@name[.='sind'])=0] ",
+        "*[count(//@name[.='id'])=1]");
 
     assertU("<delete><id>44</id></delete>");
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"sindsto\">abc123</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"sindsto\">abc123</field></doc></add>");
     assertU("<commit/>");
     // TODO: how to search for something with spaces....
 
-    assertQ(req("sindsto:abc123")
-            ,"//str[.='abc123']"
-            );
+    assertQ(req("sindsto:abc123"), "//str[.='abc123']");
 
     // test output of multivalued fields
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"title\">yonik3</field><field name=\"title\" boost=\"2\">yonik4</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"title\">yonik3</field><field name=\"title\" boost=\"2\">yonik4</field></doc></add>");
     assertU("<commit></commit>");
-    assertQ(req("id:44")
-            ,"//arr[@name='title'][./str='yonik3' and ./str='yonik4'] "
-            ,"*[count(//@name[.='title'])=1]"
-            );
-    assertQ(req("title:yonik3")
-            ,"//@numFound[.>'0']"
-            );
-    assertQ(req("title:yonik4")
-            ,"//@numFound[.>'0']"
-            );
-    assertQ(req("title:yonik5")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(
+        req("id:44"),
+        "//arr[@name='title'][./str='yonik3' and ./str='yonik4'] ",
+        "*[count(//@name[.='title'])=1]");
+    assertQ(req("title:yonik3"), "//@numFound[.>'0']");
+    assertQ(req("title:yonik4"), "//@numFound[.>'0']");
+    assertQ(req("title:yonik5"), "//@numFound[.='0']");
     assertU("<delete><query>title:yonik4</query></delete>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//@numFound[.='0']"
-            );
-
+    assertQ(req("id:44"), "//@numFound[.='0']");
 
     // not visible until commit
 
     assertU("<delete><id>44</id></delete>");
     assertU("<commit/>");
     assertU("<add><doc><field name=\"id\">44</field></doc></add>");
-    assertQ(req("id:44")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(req("id:44"), "//@numFound[.='0']");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//@numFound[.='1']"
-            );
+    assertQ(req("id:44"), "//@numFound[.='1']");
 
     // test configurable stop words
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"teststop\">world stopworda view</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"teststop\">world stopworda view</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("+id:44 +teststop:world")
-            ,"//@numFound[.='1']"
-            );
-    assertQ(req("teststop:stopworda")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(req("+id:44 +teststop:world"), "//@numFound[.='1']");
+    assertQ(req("teststop:stopworda"), "//@numFound[.='0']");
 
     // test ignoreCase stop words
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"stopfilt\">world AnD view</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"stopfilt\">world AnD view</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("+id:44 +stopfilt:world")
-            ,"//@numFound[.='1']"
-            );
-    assertQ(req("stopfilt:\"and\"")
-            ,"//@numFound[.='0']"
-            );
-    assertQ(req("stopfilt:\"AND\"")
-            ,"//@numFound[.='0']"
-            );
-    assertQ(req("stopfilt:\"AnD\"")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(req("+id:44 +stopfilt:world"), "//@numFound[.='1']");
+    assertQ(req("stopfilt:\"and\""), "//@numFound[.='0']");
+    assertQ(req("stopfilt:\"AND\""), "//@numFound[.='0']");
+    assertQ(req("stopfilt:\"AnD\""), "//@numFound[.='0']");
 
     // test dynamic field types
 
     assertU("<delete fromPending=\"true\" fromCommitted=\"true\"><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"gack_i\">51778</field><field name=\"t_name\">cats</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"gack_i\">51778</field><field name=\"t_name\">cats</field></doc></add>");
     assertU("<commit/>");
     // test if the dyn fields got added
 
-    assertQ(req("id:44")
-            ,"*[count(//doc/*)>=3]  "
-            ,"//arr[@name='gack_i']/int[.='51778']  "
-            ,"//arr[@name='t_name']/str[.='cats']"
-            );
+    assertQ(
+        req("id:44"),
+        "*[count(//doc/*)>=3]  ",
+        "//arr[@name='gack_i']/int[.='51778']  ",
+        "//arr[@name='t_name']/str[.='cats']");
     // now test if we can query by a dynamic field (requires analyzer support)
 
-    assertQ(req("t_name:cat")
-            ,"//arr[@name='t_name' and .='cats']/str"
-            );
+    assertQ(req("t_name:cat"), "//arr[@name='t_name' and .='cats']/str");
     // check that deleteByQuery works for dynamic fields
 
     assertU("<delete><query>t_name:cat</query></delete>");
     assertU("<commit/>");
-    assertQ(req("t_name:cat")
-            ,"//@numFound[.='0']"
-            );
+    assertQ(req("t_name:cat"), "//@numFound[.='0']");
 
     // test that longest dynamic field match happens first
 
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"xaa\">mystr</field><field name=\"xaaa\">12321</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"xaa\">mystr</field><field name=\"xaaa\">12321</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//arr[@name='xaa'][.='mystr']/str  "
-            ,"//arr[@name='xaaa'][.='12321']/int"
-            );
-
+    assertQ(
+        req("id:44"), "//arr[@name='xaa'][.='mystr']/str  ", "//arr[@name='xaaa'][.='12321']/int");
 
     // test integer ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">1234567890</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">10</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">2</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">15</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-987654321</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">2147483647</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-2147483648</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">0</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"*[count(//doc)=10]"
-            );
-    assertQ(req("num_i1:2147483647")
-            ,"//@numFound[.='1']  "
-            ,"//int[.='2147483647']"
-            );
-    assertQ(req("num_i1:\"-2147483648\"")
-            ,"//@numFound[.='1'] "
-            ,"//int[.='-2147483648']"
-            );
-    assertQ(req("q", "id:44", "sort","num_i1 asc")
-            ,"//doc[1]/int[.='-2147483648'] "
-            ,"//doc[last()]/int[.='2147483647']"
-            );
-    assertQ(req("q","id:44","sort","num_i1 desc")
-            ,"//doc[1]/int[.='2147483647'] "
-            ,"//doc[last()]/int[.='-2147483648']"
-            );
-    assertQ(req("num_i1:[0 TO 9]")
-            ,"*[count(//doc)=3]"
-            );
-    assertQ(req("num_i1:[-2147483648 TO 2147483647]")
-            ,"*[count(//doc)=10]"
-            );
-    assertQ(req("num_i1:[-10 TO -1]")
-            ,"*[count(//doc)=1]"
-            );
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">1234567890</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">10</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">2</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">15</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-987654321</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">2147483647</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">-2147483648</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_i1\">0</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:44"), "*[count(//doc)=10]");
+    assertQ(req("num_i1:2147483647"), "//@numFound[.='1']  ", "//int[.='2147483647']");
+    assertQ(req("num_i1:\"-2147483648\""), "//@numFound[.='1'] ", "//int[.='-2147483648']");
+    assertQ(
+        req("q", "id:44", "sort", "num_i1 asc"),
+        "//doc[1]/int[.='-2147483648'] ",
+        "//doc[last()]/int[.='2147483647']");
+    assertQ(
+        req("q", "id:44", "sort", "num_i1 desc"),
+        "//doc[1]/int[.='2147483647'] ",
+        "//doc[last()]/int[.='-2147483648']");
+    assertQ(req("num_i1:[0 TO 9]"), "*[count(//doc)=3]");
+    assertQ(req("num_i1:[-2147483648 TO 2147483647]"), "*[count(//doc)=10]");
+    assertQ(req("num_i1:[-10 TO -1]"), "*[count(//doc)=1]");
 
     // test long ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">1234567890</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">10</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">2</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">15</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-987654321</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">9223372036854775807</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-9223372036854775808</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">0</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"*[count(//doc)=10]"
-            );
-    assertQ(req("num_l1:9223372036854775807")
-            ,"//@numFound[.='1'] "
-            ,"//long[.='9223372036854775807']"
-            );
-    assertQ(req("num_l1:\"-9223372036854775808\"")
-            ,"//@numFound[.='1'] "
-            ,"//long[.='-9223372036854775808']"
-            );
-    assertQ(req("q","id:44","sort","num_l1 asc")
-            ,"//doc[1]/long[.='-9223372036854775808'] "
-            ,"//doc[last()]/long[.='9223372036854775807']"
-            );
-    assertQ(req("q","id:44", "sort", "num_l1 desc")
-            ,"//doc[1]/long[.='9223372036854775807'] "
-            ,"//doc[last()]/long[.='-9223372036854775808']"
-            );
-    assertQ(req("num_l1:[-1 TO 9]")
-            ,"*[count(//doc)=4]"
-            );
-    assertQ(req("num_l1:[-9223372036854775808 TO 9223372036854775807]")
-            ,"*[count(//doc)=10]"
-            );
-    assertQ(req("num_l1:[-10 TO -1]")
-            ,"*[count(//doc)=1]"
-            );
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">1234567890</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">10</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">2</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">15</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-987654321</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">9223372036854775807</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">-9223372036854775808</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_l1\">0</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:44"), "*[count(//doc)=10]");
+    assertQ(
+        req("num_l1:9223372036854775807"),
+        "//@numFound[.='1'] ",
+        "//long[.='9223372036854775807']");
+    assertQ(
+        req("num_l1:\"-9223372036854775808\""),
+        "//@numFound[.='1'] ",
+        "//long[.='-9223372036854775808']");
+    assertQ(
+        req("q", "id:44", "sort", "num_l1 asc"),
+        "//doc[1]/long[.='-9223372036854775808'] ",
+        "//doc[last()]/long[.='9223372036854775807']");
+    assertQ(
+        req("q", "id:44", "sort", "num_l1 desc"),
+        "//doc[1]/long[.='9223372036854775807'] ",
+        "//doc[last()]/long[.='-9223372036854775808']");
+    assertQ(req("num_l1:[-1 TO 9]"), "*[count(//doc)=4]");
+    assertQ(req("num_l1:[-9223372036854775808 TO 9223372036854775807]"), "*[count(//doc)=10]");
+    assertQ(req("num_l1:[-10 TO -1]"), "*[count(//doc)=1]");
 
     // test binary float ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">1.4142135</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">Infinity</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-Infinity</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">NaN</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">2</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-987654321</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-999999.99</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-1e20</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">0</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"*[count(//doc)=10]"
-            );
-    assertQ(req("num_f1:Infinity")
-            ,"//@numFound[.='1']  "
-            ,"//float[.='Infinity']"
-            );
-    assertQ(req("num_f1:\"-Infinity\"")
-            ,"//@numFound[.='1']  "
-            ,"//float[.='-Infinity']"
-            );
-    assertQ(req("num_f1:\"NaN\"")
-            ,"//@numFound[.='1']  "
-            ,"//float[.='NaN']"
-            );
-    assertQ(req("num_f1:\"-1e20\"")
-            ,"//@numFound[.='1']"
-            );
-    assertQ(req("q", "id:44", "sort", "num_f1 asc")
-            ,"//doc[1]/float[.='-Infinity'] "
-            ,"//doc[last()]/float[.='NaN']"
-            );
-    assertQ(req("q", "id:44", "sort","num_f1 desc")
-            ,"//doc[1]/float[.='NaN'] "
-            ,"//doc[last()]/float[.='-Infinity']"
-            );
-    assertQ(req("num_f1:[-1 TO 2]")
-            ,"*[count(//doc)=4]"
-            );
-    assertQ(req("num_f1:[-Infinity TO Infinity]")
-            ,"*[count(//doc)=9]"
-            );
-
-
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">1.4142135</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">Infinity</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-Infinity</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">NaN</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">2</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-987654321</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-999999.99</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">-1e20</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_f1\">0</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:44"), "*[count(//doc)=10]");
+    assertQ(req("num_f1:Infinity"), "//@numFound[.='1']  ", "//float[.='Infinity']");
+    assertQ(req("num_f1:\"-Infinity\""), "//@numFound[.='1']  ", "//float[.='-Infinity']");
+    assertQ(req("num_f1:\"NaN\""), "//@numFound[.='1']  ", "//float[.='NaN']");
+    assertQ(req("num_f1:\"-1e20\""), "//@numFound[.='1']");
+    assertQ(
+        req("q", "id:44", "sort", "num_f1 asc"),
+        "//doc[1]/float[.='-Infinity'] ",
+        "//doc[last()]/float[.='NaN']");
+    assertQ(
+        req("q", "id:44", "sort", "num_f1 desc"),
+        "//doc[1]/float[.='NaN'] ",
+        "//doc[last()]/float[.='-Infinity']");
+    assertQ(req("num_f1:[-1 TO 2]"), "*[count(//doc)=4]");
+    assertQ(req("num_f1:[-Infinity TO Infinity]"), "*[count(//doc)=9]");
 
     // test binary double ranges and sorting
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">1.4142135</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">Infinity</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-Infinity</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">NaN</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">2</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">1e-100</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-999999.99</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-1e100</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">0</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"*[count(//doc)=10]"
-            );
-    assertQ(req("num_d1:Infinity")
-            ,"//@numFound[.='1']  "
-            ,"//double[.='Infinity']"
-            );
-    assertQ(req("num_d1:\"-Infinity\"")
-            ,"//@numFound[.='1']  "
-            ,"//double[.='-Infinity']"
-            );
-    assertQ(req("num_d1:\"NaN\"")
-            ,"//@numFound[.='1']  "
-            ,"//double[.='NaN']"
-            );
-    assertQ(req("num_d1:\"-1e100\"")
-            ,"//@numFound[.='1']"
-            );
-    assertQ(req("num_d1:\"1e-100\"")
-            ,"//@numFound[.='1']"
-            );
-    assertQ(req("q", "id:44", "sort", "num_d1 asc")
-            ,"//doc[1]/double[.='-Infinity'] "
-            ,"//doc[last()]/double[.='NaN']"
-            );
-    assertQ(req("q","id:44","sort","num_d1 desc")
-            ,"//doc[1]/double[.='NaN'] "
-            ,"//doc[last()]/double[.='-Infinity']"
-            );
-    assertQ(req("num_d1:[-1 TO 2]")
-            ,"*[count(//doc)=5]"
-            );
-    assertQ(req("num_d1:[-Infinity TO Infinity]")
-            ,"*[count(//doc)=9]"
-            );
-
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">1.4142135</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">Infinity</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-Infinity</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">NaN</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">2</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">1e-100</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-999999.99</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">-1e100</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"num_d1\">0</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:44"), "*[count(//doc)=10]");
+    assertQ(req("num_d1:Infinity"), "//@numFound[.='1']  ", "//double[.='Infinity']");
+    assertQ(req("num_d1:\"-Infinity\""), "//@numFound[.='1']  ", "//double[.='-Infinity']");
+    assertQ(req("num_d1:\"NaN\""), "//@numFound[.='1']  ", "//double[.='NaN']");
+    assertQ(req("num_d1:\"-1e100\""), "//@numFound[.='1']");
+    assertQ(req("num_d1:\"1e-100\""), "//@numFound[.='1']");
+    assertQ(
+        req("q", "id:44", "sort", "num_d1 asc"),
+        "//doc[1]/double[.='-Infinity'] ",
+        "//doc[last()]/double[.='NaN']");
+    assertQ(
+        req("q", "id:44", "sort", "num_d1 desc"),
+        "//doc[1]/double[.='NaN'] ",
+        "//doc[last()]/double[.='-Infinity']");
+    assertQ(req("num_d1:[-1 TO 2]"), "*[count(//doc)=5]");
+    assertQ(req("num_d1:[-Infinity TO Infinity]"), "*[count(//doc)=9]");
 
     // test sorting on multiple fields
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">10</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">1</field><field name=\"b_i1\">100</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">-1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">15</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">1</field><field name=\"b_i1\">50</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">0</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"*[count(//doc)=6]"
-            );
-
-    assertQ(req("q","id:44", "sort", "a_i1 asc,b_i1 desc")
-            ,"*[count(//doc)=6] "
-            ,"//doc[3]/int[.='100'] "
-            ,"//doc[4]/int[.='50']"
-            );
-    assertQ(req("q","id:44", "sort", "a_i1 asc  , b_i1 asc")
-            ,"*[count(//doc)=6] "
-            ,"//doc[3]/int[.='50'] "
-            ,"//doc[4]/int[.='100']"
-            );
-    assertQ(req("q", "id:44", "sort", "a_i1 asc")
-            ,"*[count(//doc)=6] "
-            ,"//doc[1]/int[.='-1'] "
-            ,"//doc[last()]/int[.='15']"
-            );
-    assertQ(req("q","id:44","sort","a_i1 asc , score top")
-            ,"*[count(//doc)=6] "
-            ,"//doc[1]/int[.='-1'] "
-            ,"//doc[last()]/int[.='15']"
-            );
-    assertQ(req("q","id:44","sort","score top , a_i1 top, b_i1 bottom ")
-            ,"*[count(//doc)=6] "
-            ,"//doc[last()]/int[.='-1'] "
-            ,"//doc[1]/int[.='15'] "
-            ,"//doc[3]/int[.='50'] "
-            ,"//doc[4]/int[.='100']"
-            );
-
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">10</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">1</field><field name=\"b_i1\">100</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">-1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">15</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">1</field><field name=\"b_i1\">50</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id\">44</field><field name=\"a_i1\">0</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:44"), "*[count(//doc)=6]");
+
+    assertQ(
+        req("q", "id:44", "sort", "a_i1 asc,b_i1 desc"),
+        "*[count(//doc)=6] ",
+        "//doc[3]/int[.='100'] ",
+        "//doc[4]/int[.='50']");
+    assertQ(
+        req("q", "id:44", "sort", "a_i1 asc  , b_i1 asc"),
+        "*[count(//doc)=6] ",
+        "//doc[3]/int[.='50'] ",
+        "//doc[4]/int[.='100']");
+    assertQ(
+        req("q", "id:44", "sort", "a_i1 asc"),
+        "*[count(//doc)=6] ",
+        "//doc[1]/int[.='-1'] ",
+        "//doc[last()]/int[.='15']");
+    assertQ(
+        req("q", "id:44", "sort", "a_i1 asc , score top"),
+        "*[count(//doc)=6] ",
+        "//doc[1]/int[.='-1'] ",
+        "//doc[last()]/int[.='15']");
+    assertQ(
+        req("q", "id:44", "sort", "score top , a_i1 top, b_i1 bottom "),
+        "*[count(//doc)=6] ",
+        "//doc[last()]/int[.='-1'] ",
+        "//doc[1]/int[.='15'] ",
+        "//doc[3]/int[.='50'] ",
+        "//doc[4]/int[.='100']");
 
     // test sorting  with some docs missing the sort field
 
     assertU("<delete><query>id_i:[1000 TO 1010]</query></delete>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1000</field><field name=\"a_i1\">1</field><field name=\"nullfirst\">Z</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1001</field><field name=\"a_i1\">10</field><field name=\"nullfirst\">A</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1002</field><field name=\"a_i1\">1</field><field name=\"b_i1\">100</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1003</field><field name=\"a_i1\">-1</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1004</field><field name=\"a_i1\">15</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1005</field><field name=\"a_i1\">1</field><field name=\"b_i1\">50</field></doc></add>");
-    assertU("<add overwrite=\"false\"><doc><field name=\"id_i\">1006</field><field name=\"a_i1\">0</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id_i:[1000 TO 1010]")
-            ,"*[count(//doc)=7]"
-            );
-    assertQ(req("q","id_i:[1000 TO 1010]","sort","b_i1 asc")
-            ,"*[count(//doc)=7] "
-            ,"//doc[1]/int[.='50'] "
-            ,"//doc[2]/int[.='100']"
-            );
-    assertQ(req("q","id_i:[1000 TO 1010]","sort"," b_i1 desc")
-            ,"*[count(//doc)=7] "
-            ,"//doc[1]/int[.='100'] "
-            ,"//doc[2]/int[.='50']"
-            );
-    assertQ(req("q","id_i:[1000 TO 1010]","sort"," a_i1 asc,b_i1 desc")
-            ,"*[count(//doc)=7] "
-            ,"//doc[3]/int[@name='b_i1' and .='100'] "
-            ,"//doc[4]/int[@name='b_i1' and .='50']  "
-            ,"//doc[5]/arr[@name='id_i' and .='1000']"
-            );
-    assertQ(req("q","id_i:[1000 TO 1010]","sort"," a_i1 asc,b_i1 asc")
-            ,"*[count(//doc)=7] "
-            ,"//doc[3]/int[@name='b_i1' and .='50'] "
-            ,"//doc[4]/int[@name='b_i1' and .='100']  "
-            ,"//doc[5]/arr[@name='id_i' and .='1000']"
-            );
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1000</field><field name=\"a_i1\">1</field><field name=\"nullfirst\">Z</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1001</field><field name=\"a_i1\">10</field><field name=\"nullfirst\">A</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1002</field><field name=\"a_i1\">1</field><field name=\"b_i1\">100</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1003</field><field name=\"a_i1\">-1</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1004</field><field name=\"a_i1\">15</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1005</field><field name=\"a_i1\">1</field><field name=\"b_i1\">50</field></doc></add>");
+    assertU(
+        "<add overwrite=\"false\"><doc><field name=\"id_i\">1006</field><field name=\"a_i1\">0</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id_i:[1000 TO 1010]"), "*[count(//doc)=7]");
+    assertQ(
+        req("q", "id_i:[1000 TO 1010]", "sort", "b_i1 asc"),
+        "*[count(//doc)=7] ",
+        "//doc[1]/int[.='50'] ",
+        "//doc[2]/int[.='100']");
+    assertQ(
+        req("q", "id_i:[1000 TO 1010]", "sort", " b_i1 desc"),
+        "*[count(//doc)=7] ",
+        "//doc[1]/int[.='100'] ",
+        "//doc[2]/int[.='50']");
+    assertQ(
+        req("q", "id_i:[1000 TO 1010]", "sort", " a_i1 asc,b_i1 desc"),
+        "*[count(//doc)=7] ",
+        "//doc[3]/int[@name='b_i1' and .='100'] ",
+        "//doc[4]/int[@name='b_i1' and .='50']  ",
+        "//doc[5]/arr[@name='id_i' and .='1000']");
+    assertQ(
+        req("q", "id_i:[1000 TO 1010]", "sort", " a_i1 asc,b_i1 asc"),
+        "*[count(//doc)=7] ",
+        "//doc[3]/int[@name='b_i1' and .='50'] ",
+        "//doc[4]/int[@name='b_i1' and .='100']  ",
+        "//doc[5]/arr[@name='id_i' and .='1000']");
     // nullfirst tests
-    assertQ(req("q","id_i:[1000 TO 1002]","sort"," nullfirst asc")
-            ,"*[count(//doc)=3] "
-            ,"//doc[1]/arr[@name='id_i' and .='1002']"
-            ,"//doc[2]/arr[@name='id_i' and .='1001']  "
-            ,"//doc[3]/arr[@name='id_i' and .='1000']"
-            );
-    assertQ(req("q","id_i:[1000 TO 1002]","sort"," nullfirst desc")
-            ,"*[count(//doc)=3] "
-            ,"//doc[1]/arr[@name='id_i' and .='1002']"
-            ,"//doc[2]/arr[@name='id_i' and .='1000']  "
-            ,"//doc[3]/arr[@name='id_i' and .='1001']"
-            );
+    assertQ(
+        req("q", "id_i:[1000 TO 1002]", "sort", " nullfirst asc"),
+        "*[count(//doc)=3] ",
+        "//doc[1]/arr[@name='id_i' and .='1002']",
+        "//doc[2]/arr[@name='id_i' and .='1001']  ",
+        "//doc[3]/arr[@name='id_i' and .='1000']");
+    assertQ(
+        req("q", "id_i:[1000 TO 1002]", "sort", " nullfirst desc"),
+        "*[count(//doc)=3] ",
+        "//doc[1]/arr[@name='id_i' and .='1002']",
+        "//doc[2]/arr[@name='id_i' and .='1000']  ",
+        "//doc[3]/arr[@name='id_i' and .='1001']");
 
     // Sort parsing exception tests.  (SOLR-6, SOLR-99)
     try (ErrorLogMuter errors = ErrorLogMuter.substring("shouldbeunindexed")) {
-      assertQEx( "can not sort unindexed fields",
-                 req( "q","id_i:1000", "sort", "shouldbeunindexed asc" ), 400 );
+      assertQEx(
+          "can not sort unindexed fields",
+          req("q", "id_i:1000", "sort", "shouldbeunindexed asc"),
+          400);
       assertEquals(1, errors.getCount());
     }
-    
+
     try (ErrorLogMuter errors = ErrorLogMuter.substring("nullfirst")) {
-      assertQEx( "invalid query format",
-                 req( "q","id_i:1000", "sort", "nullfirst" ), 400 );
+      assertQEx("invalid query format", req("q", "id_i:1000", "sort", "nullfirst"), 400);
       assertEquals(1, errors.getCount());
     }
 
     try (ErrorLogMuter abc = ErrorLogMuter.substring("abcde12345");
-         ErrorLogMuter aaa = ErrorLogMuter.substring("aaa")) {
-      assertQEx( "unknown sort field",
-                 req( "q","id_i:1000", "sort", "abcde12345 asc" ), 400 ); 
+        ErrorLogMuter aaa = ErrorLogMuter.substring("aaa")) {
+      assertQEx("unknown sort field", req("q", "id_i:1000", "sort", "abcde12345 asc"), 400);
+
+      assertQEx("unknown sort order", req("q", "id_i:1000", "sort", "nullfirst aaa"), 400);
 
-      assertQEx( "unknown sort order",
-                 req( "q","id_i:1000", "sort", "nullfirst aaa" ), 400 );
-      
       assertEquals(1, abc.getCount());
       assertEquals(1, aaa.getCount());
     }
-        
+
     // test prefix query
 
     assertU("<delete><query>val_s:[* TO *]</query></delete>");
-    assertU("<add><doc><field name=\"id\">100</field><field name=\"val_s\">apple</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">101</field><field name=\"val_s\">banana</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">102</field><field name=\"val_s\">apple</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">103</field><field name=\"val_s\">pearing</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">104</field><field name=\"val_s\">pear</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">105</field><field name=\"val_s\">appalling</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">106</field><field name=\"val_s\">pearson</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">107</field><field name=\"val_s\">port</field></doc></add>");
-    assertU("<commit/>");
-
-    assertQ(req("val_s:a*")
-            ,"//*[@numFound='3']"
-            );
-    assertQ(req("val_s:p*")
-            ,"//*[@numFound='4']"
-            );
+    assertU(
+        "<add><doc><field name=\"id\">100</field><field name=\"val_s\">apple</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">101</field><field name=\"val_s\">banana</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">102</field><field name=\"val_s\">apple</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">103</field><field name=\"val_s\">pearing</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">104</field><field name=\"val_s\">pear</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">105</field><field name=\"val_s\">appalling</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">106</field><field name=\"val_s\">pearson</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">107</field><field name=\"val_s\">port</field></doc></add>");
+    assertU("<commit/>");
+
+    assertQ(req("val_s:a*"), "//*[@numFound='3']");
+    assertQ(req("val_s:p*"), "//*[@numFound='4']");
     // val_s:* %//*[@numFound="8"]
 
     // test wildcard query
-    assertQ(req("val_s:a*p*") ,"//*[@numFound='3']");
-    assertQ(req("val_s:p?a*") ,"//*[@numFound='3']");
+    assertQ(req("val_s:a*p*"), "//*[@numFound='3']");
+    assertQ(req("val_s:p?a*"), "//*[@numFound='3']");
 
     assertU("<delete><query>id:[100 TO 110]</query></delete>");
 
     // test copyField functionality
 
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"title\">How Now4 brown Cows</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"title\">How Now4 brown Cows</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:42 AND title:Now")
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("id:42 AND title_lettertok:Now")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND title:cow")
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("id:42 AND title_stemmed:cow")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND text:cow")
-            ,"*[count(//doc)=1]"
-            );
+    assertQ(req("id:42 AND title:Now"), "*[count(//doc)=0]");
+    assertQ(req("id:42 AND title_lettertok:Now"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND title:cow"), "*[count(//doc)=0]");
+    assertQ(req("id:42 AND title_stemmed:cow"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND text:cow"), "*[count(//doc)=1]");
 
     // test copyField functionality with a pattern.
 
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"copy_t\">Copy me to the text field pretty please.</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"copy_t\">Copy me to the text field pretty please.</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:42 AND text:pretty")
-        ,"*[count(//doc)=1]"
-        );
-    assertQ(req("id:42 AND copy_t:pretty")
-        ,"*[count(//doc)=1]"
-        );
-    
+    assertQ(req("id:42 AND text:pretty"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND copy_t:pretty"), "*[count(//doc)=1]");
+
     // test slop
 
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"text\">foo bar</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"text\">foo bar</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:42 AND text:\"foo bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND text:\"foo\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND text:\"bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND text:\"bar foo\"")
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("id:42 AND text:\"bar foo\"~2")
-            ,"*[count(//doc)=1]"
-            );
-
+    assertQ(req("id:42 AND text:\"foo bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND text:\"foo\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND text:\"bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND text:\"bar foo\""), "*[count(//doc)=0]");
+    assertQ(req("id:42 AND text:\"bar foo\"~2"), "*[count(//doc)=1]");
 
     // intra-word delimiter testing (WordDelimiterGraphFilter)
 
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">foo bar</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:\"foo bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"foo\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"bar foo\"")
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("id:42 AND subword:\"bar foo\"~2")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"foo/bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:foobar")
-            ,"*[count(//doc)=0]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">foo-bar</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:\"foo bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"foo\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"bar foo\"")
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("id:42 AND subword:\"bar foo\"~2")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"foo/bar\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:foobar")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">Canon PowerShot SD500 7MP</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:\"power-shot\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"power shot sd 500\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"powershot\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"SD-500\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"SD500\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"SD500-7MP\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"PowerShotSD500-7MP\"")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">Wi-Fi</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:wifi")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:wi+=fi")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:wi+=fi")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:WiFi")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"wi fi\"")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">'I.B.M' A's,B's,C's</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:\"'I.B.M.'\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:I.B.M")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:IBM")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:I--B--M")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"I B M\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:IBM's")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"IBM'sx\"")
-            ,"*[count(//doc)=0]"
-            );
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">foo bar</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:\"foo bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"foo\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"bar foo\""), "*[count(//doc)=0]");
+    assertQ(req("id:42 AND subword:\"bar foo\"~2"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"foo/bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:foobar"), "*[count(//doc)=0]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">foo-bar</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:\"foo bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"foo\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"bar foo\""), "*[count(//doc)=0]");
+    assertQ(req("id:42 AND subword:\"bar foo\"~2"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"foo/bar\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:foobar"), "*[count(//doc)=1]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">Canon PowerShot SD500 7MP</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:\"power-shot\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"power shot sd 500\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"powershot\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"SD-500\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"SD500\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"SD500-7MP\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"PowerShotSD500-7MP\""), "*[count(//doc)=1]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">Wi-Fi</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:wifi"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:wi+=fi"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:wi+=fi"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:WiFi"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"wi fi\""), "*[count(//doc)=1]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">'I.B.M' A's,B's,C's</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:\"'I.B.M.'\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:I.B.M"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:IBM"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:I--B--M"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"I B M\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:IBM's"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"IBM'sx\""), "*[count(//doc)=0]");
 
     // this one fails since IBM and ABC are separated by two tokens
 
     // id:42 AND subword:IBM's-ABC's  %*[count(//doc)=1]
 
-    assertQ(req("id:42 AND subword:\"IBM's-ABC's\"~2")
-            ,"*[count(//doc)=1]"
-            );
+    assertQ(req("id:42 AND subword:\"IBM's-ABC's\"~2"), "*[count(//doc)=1]");
 
-    assertQ(req("id:42 AND subword:\"A's B's-C's\"")
-            ,"*[count(//doc)=1]"
-            );
+    assertQ(req("id:42 AND subword:\"A's B's-C's\""), "*[count(//doc)=1]");
 
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">Sony KDF-E50A10</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">Sony KDF-E50A10</field></doc></add>");
     assertU("<commit/>");
 
     // check for exact match:
@@ -1013,239 +748,163 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
 
     //  Sony KDF E      50 A 10  (and how it's queried)
 
-    assertQ(req("id:42 AND subword:\"Sony KDF-E50A10\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:10")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:Sony")
-            ,"*[count(//doc)=1]"
-            );
+    assertQ(req("id:42 AND subword:\"Sony KDF-E50A10\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:10"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:Sony"), "*[count(//doc)=1]");
 
     // this one fails without slop since Sony and KDFE have a token inbetween
 
     // id:42 AND subword:SonyKDFE50A10  %*[count(//doc)=1]
 
-    assertQ(req("id:42 AND subword:\"SonyKDFE50A10\"~10")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertQ(req("id:42 AND subword:\"Sony KDF E-50-A-10\"")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">http://www.yahoo.com</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:yahoo")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:www.yahoo.com")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:http\\://www.yahoo.com")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">--Q 1-- W2 E-3 Ok xY 4R 5-T *6-Y- 7-8-- 10A-B</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("id:42 AND subword:Q")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:1")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"w 2\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"e 3\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"o k\"")
-            ,"*[count(//doc)=0]"
-            );
-    assertQ(req("id:42 AND subword:\"ok\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"x y\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"xy\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"4 r\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"5 t\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"5 t\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"6 y\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"7 8\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"78\"")
-            ,"*[count(//doc)=1]"
-            );
-    assertQ(req("id:42 AND subword:\"10 A+B\"")
-            ,"*[count(//doc)=1]"
-            );
-
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">FooBarBaz</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">FooBar10</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">10FooBar</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">BAZ</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">10</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">42</field><field name=\"subword\">Mark, I found what's the problem! It turns to be from the latest schema. I found tons of exceptions in the resin.stdout that prevented the builder from performing. It's all coming from the WordDelimiterFilter which was just added to the latest schema: [2005-08-29 15:11:38.375] java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 673804 [2005-08-29 15:11:38.375]  at java.util.ArrayList.RangeCheck(ArrayList.java: [...]
-
-
-    // 
+    assertQ(req("id:42 AND subword:\"SonyKDFE50A10\"~10"), "*[count(//doc)=1]");
+
+    assertQ(req("id:42 AND subword:\"Sony KDF E-50-A-10\""), "*[count(//doc)=1]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">http://www.yahoo.com</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:yahoo"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:www.yahoo.com"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:http\\://www.yahoo.com"), "*[count(//doc)=1]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">--Q 1-- W2 E-3 Ok xY 4R 5-T *6-Y- 7-8-- 10A-B</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("id:42 AND subword:Q"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:1"), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"w 2\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"e 3\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"o k\""), "*[count(//doc)=0]");
+    assertQ(req("id:42 AND subword:\"ok\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"x y\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"xy\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"4 r\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"5 t\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"5 t\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"6 y\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"7 8\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"78\""), "*[count(//doc)=1]");
+    assertQ(req("id:42 AND subword:\"10 A+B\""), "*[count(//doc)=1]");
+
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">FooBarBaz</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">FooBar10</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">10FooBar</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">BAZ</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">10</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">42</field><field name=\"subword\">Mark, I found what's the problem! It turns to be from the latest schema. I found tons of exceptions in the resin.stdout that prevented the builder from performing. It's all coming from the WordDelimiterFilter which was just added to the latest schema: [2005-08-29 15:11:38.375] java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 673804 [2005-08-29 15:11:38.375]  at java.util.ArrayList.RangeCheck(ArrayList.java:547) [...]
+
+    //
 
     assertU("<delete fromPending=\"true\" fromCommitted=\"true\"><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"fname_s\">Yonik</field><field name=\"here_b\">true</field><field name=\"iq_l\">10000000000</field><field name=\"description_t\">software engineer</field><field name=\"ego_d\">1e100</field><field name=\"pi_f\">3.1415962</field><field name=\"when_dt\">2005-03-18T01:14:34Z</field><field name=\"arr_f\">1.414213562</field><field name=\"arr_f\">.999</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"fname_s\">Yonik</field><field name=\"here_b\">true</field><field name=\"iq_l\">10000000000</field><field name=\"description_t\">software engineer</field><field name=\"ego_d\">1e100</field><field name=\"pi_f\">3.1415962</field><field name=\"when_dt\">2005-03-18T01:14:34Z</field><field name=\"arr_f\">1.414213562</field><field name=\"arr_f\">.999</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            );
+    assertQ(req("id:44"));
     args = new HashMap<>();
-    args.put("fl","fname_s,arr_f  ");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//str[.='Yonik']  "
-            ,"//float[.='1.4142135']"
-            );
+    args.put("fl", "fname_s,arr_f  ");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//str[.='Yonik']  ", "//float[.='1.4142135']");
     args = new HashMap<>();
-    args.put("fl","fname_s,score");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//str[.='Yonik']"
-            ,"//float[@name='score' and . > 0]"
-            );
+    args.put("fl", "fname_s,score");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//str[.='Yonik']", "//float[@name='score' and . > 0]");
 
     // test addition of score field
 
     args = new HashMap<>();
-    args.put("fl","score,* ");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//str[.='Yonik']  "
-            ,"//float[.='1.4142135'] "
-            ,"//float[@name='score'] "
-            ,"*[count(//doc/*)>=13]"
-            );
+    args.put("fl", "score,* ");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(
+        req,
+        "//str[.='Yonik']  ",
+        "//float[.='1.4142135'] ",
+        "//float[@name='score'] ",
+        "*[count(//doc/*)>=13]");
     args = new HashMap<>();
-    args.put("fl","*,score ");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//str[.='Yonik']  "
-            ,"//float[.='1.4142135'] "
-            ,"//float[@name='score'] "
-            ,"*[count(//doc/*)>=13]"
-            );
+    args.put("fl", "*,score ");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(
+        req,
+        "//str[.='Yonik']  ",
+        "//float[.='1.4142135'] ",
+        "//float[@name='score'] ",
+        "*[count(//doc/*)>=13]");
     args = new HashMap<>();
-    args.put("fl","* ");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//str[.='Yonik']  "
-            ,"//float[.='1.4142135'] "
-            ,"*[count(//doc/*)>=12]"
-            );
+    args.put("fl", "* ");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//str[.='Yonik']  ", "//float[.='1.4142135'] ", "*[count(//doc/*)>=12]");
 
     // test maxScore
 
     args = new HashMap<>();
-    args.put("fl","score ");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//result[@maxScore>0]"
-            );
+    args.put("fl", "score ");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//result[@maxScore>0]");
     args = new HashMap<>();
-    args.put("fl","score ");
-    args.put("sort","id desc");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//result[@maxScore>0]"
-            );
+    args.put("fl", "score ");
+    args.put("sort", "id desc");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//result[@maxScore>0]");
     args = new HashMap<>();
-    args.put("fl","score ");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//@maxScore = //doc/float[@name='score']"
-            );
+    args.put("fl", "score ");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//@maxScore = //doc/float[@name='score']");
     args = new HashMap<>();
-    args.put("fl","score ");
-    args.put("sort","id desc");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 10, args);
-    assertQ(req
-            ,"//@maxScore = //doc/float[@name='score']"
-            );
+    args.put("fl", "score ");
+    args.put("sort", "id desc");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 10, args);
+    assertQ(req, "//@maxScore = //doc/float[@name='score']");
     args = new HashMap<>();
-    args.put("fl","*,score");
-    args.put("sort","id desc");
-    req = new LocalSolrQueryRequest(h.getCore(), "id:44",
-                                    "/select", 0, 0 , args);
-    assertQ(req
-            ,"//result[@maxScore>0]"
-            );
-
+    args.put("fl", "*,score");
+    args.put("sort", "id desc");
+    req = new LocalSolrQueryRequest(h.getCore(), "id:44", "/select", 0, 0, args);
+    assertQ(req, "//result[@maxScore>0]");
 
     //  test schema field attribute inheritance and overriding
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"shouldbestored\">hi</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"shouldbestored\">hi</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//*[@name='shouldbestored']"
-            );
-    assertQ(req("+id:44 +shouldbestored:hi")
-            ,"//*[@numFound='1']"
-            );
+    assertQ(req("id:44"), "//*[@name='shouldbestored']");
+    assertQ(req("+id:44 +shouldbestored:hi"), "//*[@numFound='1']");
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"shouldbeunstored\">hi</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"shouldbeunstored\">hi</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"not(//*[@name='shouldbeunstored'])"
-            );
-    assertQ(req("+id:44 +shouldbeunstored:hi")
-            ,"//*[@numFound='1']"
-            );
+    assertQ(req("id:44"), "not(//*[@name='shouldbeunstored'])");
+    assertQ(req("+id:44 +shouldbeunstored:hi"), "//*[@numFound='1']");
 
     assertU("<delete><id>44</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"shouldbeunindexed\">hi</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"shouldbeunindexed\">hi</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:44")
-            ,"//*[@name='shouldbeunindexed']"
-            );
+    assertQ(req("id:44"), "//*[@name='shouldbeunindexed']");
     //  this should result in an error... how to check for that?
 
     // +id:44 +shouldbeunindexed:hi %//*[@numFound="0"]
 
-
     // test spaces between XML elements because that can introduce extra XML events that
 
     // can mess up parsing (and it has in the past)
 
     assertU("<delete>  <id>44</id>  </delete>");
-    assertU("<add>  <doc>  <field name=\"id\">44</field>  <field name=\"shouldbestored\">hi</field>  </doc>  </add>");
+    assertU(
+        "<add>  <doc>  <field name=\"id\">44</field>  <field name=\"shouldbestored\">hi</field>  </doc>  </add>");
     assertU("<commit />");
 
     // test adding multiple docs per add command
 
     // assertU("<delete><query>id:[0 TO 99]</query></delete>");
-    // assertU("<add><doc><field name=\"id\">1</field></doc><doc><field name=\"id\">2</field></doc></add>");
+    // assertU("<add><doc><field name=\"id\">1</field></doc><doc><field
+    // name=\"id\">2</field></doc></add>");
     // assertU("<commit/>");
     // assertQ(req("id:[0 TO 99]")
     // ,"//*[@numFound='2']"
@@ -1259,68 +918,33 @@ public class ConvertedLegacyTest extends SolrTestCaseJ4 {
     assertU("<add><doc><field name=\"id\">12</field><field name=\"syn\">c</field></doc></add>");
     assertU("<add><doc><field name=\"id\">13</field><field name=\"syn\">foo</field></doc></add>");
     assertU("<commit/>");
-    assertQ(req("id:10 AND syn:a")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:10 AND syn:aa")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:11 AND syn:b")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:11 AND syn:b1")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:11 AND syn:b2")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:12 AND syn:c")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:12 AND syn:c1")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:12 AND syn:c2")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:13 AND syn:foo")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:13 AND syn:bar")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("id:13 AND syn:baz")
-            ,"//*[@numFound='1']"
-            );
-
+    assertQ(req("id:10 AND syn:a"), "//*[@numFound='1']");
+    assertQ(req("id:10 AND syn:aa"), "//*[@numFound='1']");
+    assertQ(req("id:11 AND syn:b"), "//*[@numFound='1']");
+    assertQ(req("id:11 AND syn:b1"), "//*[@numFound='1']");
+    assertQ(req("id:11 AND syn:b2"), "//*[@numFound='1']");
+    assertQ(req("id:12 AND syn:c"), "//*[@numFound='1']");
+    assertQ(req("id:12 AND syn:c1"), "//*[@numFound='1']");
+    assertQ(req("id:12 AND syn:c2"), "//*[@numFound='1']");
+    assertQ(req("id:13 AND syn:foo"), "//*[@numFound='1']");
+    assertQ(req("id:13 AND syn:bar"), "//*[@numFound='1']");
+    assertQ(req("id:13 AND syn:baz"), "//*[@numFound='1']");
 
     // test position increment gaps between field values
 
     assertU("<delete><id>44</id></delete>");
     assertU("<delete><id>45</id></delete>");
-    assertU("<add><doc><field name=\"id\">44</field><field name=\"textgap\">aa bb cc</field><field name=\"textgap\">dd ee ff</field></doc></add>");
-    assertU("<add><doc><field name=\"id\">45</field><field name=\"text\">aa bb cc</field><field name=\"text\">dd ee ff</field></doc></add>");
-    assertU("<commit/>");
-    assertQ(req("+id:44 +textgap:\"aa bb cc\"")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("+id:44 +textgap:\"dd ee ff\"")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("+id:44 +textgap:\"cc dd\"")
-            ,"//*[@numFound='0']"
-            );
-    assertQ(req("+id:44 +textgap:\"cc dd\"~100")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("+id:44 +textgap:\"bb cc dd ee\"~90")
-            ,"//*[@numFound='0']"
-            );
-    assertQ(req("+id:44 +textgap:\"bb cc dd ee\"~100")
-            ,"//*[@numFound='1']"
-            );
-    assertQ(req("+id:45 +text:\"cc dd\"")
-            ,"//*[@numFound='1']"
-            );
+    assertU(
+        "<add><doc><field name=\"id\">44</field><field name=\"textgap\">aa bb cc</field><field name=\"textgap\">dd ee ff</field></doc></add>");
+    assertU(
+        "<add><doc><field name=\"id\">45</field><field name=\"text\">aa bb cc</field><field name=\"text\">dd ee ff</field></doc></add>");
+    assertU("<commit/>");
+    assertQ(req("+id:44 +textgap:\"aa bb cc\""), "//*[@numFound='1']");
+    assertQ(req("+id:44 +textgap:\"dd ee ff\""), "//*[@numFound='1']");
+    assertQ(req("+id:44 +textgap:\"cc dd\""), "//*[@numFound='0']");
+    assertQ(req("+id:44 +textgap:\"cc dd\"~100"), "//*[@numFound='1']");
+    assertQ(req("+id:44 +textgap:\"bb cc dd ee\"~90"), "//*[@numFound='0']");
+    assertQ(req("+id:44 +textgap:\"bb cc dd ee\"~100"), "//*[@numFound='1']");
+    assertQ(req("+id:45 +text:\"cc dd\""), "//*[@numFound='1']");
   }
 }
diff --git a/solr/core/src/test/org/apache/solr/CursorPagingTest.java b/solr/core/src/test/org/apache/solr/CursorPagingTest.java
index 378574c..e3b1b28 100644
--- a/solr/core/src/test/org/apache/solr/CursorPagingTest.java
+++ b/solr/core/src/test/org/apache/solr/CursorPagingTest.java
@@ -16,6 +16,13 @@
  */
 package org.apache.solr;
 
+import static org.apache.solr.common.params.CommonParams.TIME_ALLOWED;
+import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_NEXT;
+import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_PARAM;
+import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_START;
+import static org.apache.solr.common.params.SolrParams.wrapDefaults;
+import static org.apache.solr.common.util.Utils.fromJSONString;
+
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,7 +35,7 @@ import java.util.UUID;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
-
+import org.apache.commons.lang3.StringUtils;
 import org.apache.lucene.util.SentinelIntSet;
 import org.apache.lucene.util.TestUtil;
 import org.apache.lucene.util.mutable.MutableValueInt;
@@ -47,36 +54,28 @@ import org.apache.solr.util.LogLevel;
 import org.junit.After;
 import org.junit.BeforeClass;
 
-import org.apache.commons.lang3.StringUtils;
-
-import static org.apache.solr.common.params.SolrParams.wrapDefaults;
-import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_NEXT;
-import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_PARAM;
-import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_START;
-import static org.apache.solr.common.params.CommonParams.TIME_ALLOWED;
-import static org.apache.solr.common.util.Utils.fromJSONString;
-
-/**
- * Tests of deep paging using {@link CursorMark} and {@link CursorMarkParams#CURSOR_MARK_PARAM}.
- */
+/** Tests of deep paging using {@link CursorMark} and {@link CursorMarkParams#CURSOR_MARK_PARAM}. */
 public class CursorPagingTest extends SolrTestCaseJ4 {
 
   /** solrconfig.xml file name, shared with other cursor related tests */
-
-  public final static String TEST_SOLRCONFIG_NAME = "solrconfig-deeppaging.xml";
+  public static final String TEST_SOLRCONFIG_NAME = "solrconfig-deeppaging.xml";
   /** schema.xml file name, shared with other cursor related tests */
-  public final static String TEST_SCHEMAXML_NAME = "schema-sorts.xml";
+  public static final String TEST_SCHEMAXML_NAME = "schema-sorts.xml";
   /** values from enumConfig.xml */
-  public static final String[] SEVERITY_ENUM_VALUES =
-      { "Not Available", "Low", "Medium", "High", "Critical" };
+  public static final String[] SEVERITY_ENUM_VALUES = {
+    "Not Available", "Low", "Medium", "High", "Critical"
+  };
 
   @BeforeClass
   public static void beforeTests() throws Exception {
     // we need DVs on point fields to compute stats & facets
-    if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP)) System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"true");
-    System.setProperty("solr.test.useFilterForSortedQuery", Boolean.toString(random().nextBoolean()));
+    if (Boolean.getBoolean(NUMERIC_POINTS_SYSPROP))
+      System.setProperty(NUMERIC_DOCVALUES_SYSPROP, "true");
+    System.setProperty(
+        "solr.test.useFilterForSortedQuery", Boolean.toString(random().nextBoolean()));
     initCore(TEST_SOLRCONFIG_NAME, TEST_SCHEMAXML_NAME);
   }
+
   @After
   public void cleanup() throws Exception {
     assertU(delQ("*:*"));
@@ -95,80 +94,85 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     assertU(commit());
 
     // empty, blank, or bogus cursor
-    for (String c : new String[] { "", "   ", "all the docs please!"}) {
-      assertFail(params("q", "*:*", 
-                        "sort", "id desc", 
-                        CURSOR_MARK_PARAM, c),
-                 ErrorCode.BAD_REQUEST, "Unable to parse");
+    for (String c : new String[] {"", "   ", "all the docs please!"}) {
+      assertFail(
+          params("q", "*:*", "sort", "id desc", CURSOR_MARK_PARAM, c),
+          ErrorCode.BAD_REQUEST,
+          "Unable to parse");
     }
 
     // no id in sort
-    assertFail(params("q", "*:*", 
-                      "sort", "score desc", 
-                      CURSOR_MARK_PARAM, CURSOR_MARK_START),
-               ErrorCode.BAD_REQUEST, "uniqueKey field");
+    assertFail(
+        params("q", "*:*", "sort", "score desc", CURSOR_MARK_PARAM, CURSOR_MARK_START),
+        ErrorCode.BAD_REQUEST,
+        "uniqueKey field");
     // _docid_
-    assertFail(params("q", "*:*", 
-                      "sort", "_docid_ asc, id desc", 
-                      CURSOR_MARK_PARAM, CURSOR_MARK_START),
-               ErrorCode.BAD_REQUEST, "_docid_");
+    assertFail(
+        params("q", "*:*", "sort", "_docid_ asc, id desc", CURSOR_MARK_PARAM, CURSOR_MARK_START),
+        ErrorCode.BAD_REQUEST,
+        "_docid_");
 
     // using cursor w/ grouping
-    assertFail(params("q", "*:*", 
-                      "sort", "id desc", 
-                      GroupParams.GROUP, "true",
-                      GroupParams.GROUP_FIELD, "str",
-                      CURSOR_MARK_PARAM, CURSOR_MARK_START),
-               ErrorCode.BAD_REQUEST, "Grouping");
-
-    // if a user specifies a 'bogus' cursorMark param, this should error *only* if some other component
-    // cares about (and parses) a SortSpec in it's prepare() method.
-    // (the existence of a 'sort' param shouldn't make a diff ... unless it makes a diff to a component being used,
+    assertFail(
+        params(
+            "q",
+            "*:*",
+            "sort",
+            "id desc",
+            GroupParams.GROUP,
+            "true",
+            GroupParams.GROUP_FIELD,
+            "str",
+            CURSOR_MARK_PARAM,
+            CURSOR_MARK_START),
+        ErrorCode.BAD_REQUEST,
+        "Grouping");
+
+    // if a user specifies a 'bogus' cursorMark param, this should error *only* if some other
+    // component cares about (and parses) a SortSpec in it's prepare() method. (the existence of a
+    // 'sort' param shouldn't make a diff ... unless it makes a diff to a component being used,
     // which it doesn't for RTG)
     assertU(adoc("id", "yyy", "str", "y", "float", "3", "int", "-3"));
     if (random().nextBoolean()) {
       assertU(commit());
     }
-    for (SolrParams p : Arrays.asList(params(),
-                                      params(CURSOR_MARK_PARAM, "gibberish"),
-                                      params(CURSOR_MARK_PARAM, "gibberish",
-                                             "sort", "id asc"))) {
-      assertJQ(req(p,
-                   "qt","/get",
-                   "fl", "id",
-                   "id","yyy") 
-               , "=={'doc':{'id':'yyy'}}");
-      assertJQ(req(p,
-                   "qt","/get",
-                   "fl", "id",
-                   "id","xxx") // doesn't exist in our collection
-               , "=={'doc':null}");
+    for (SolrParams p :
+        Arrays.asList(
+            params(),
+            params(CURSOR_MARK_PARAM, "gibberish"),
+            params(CURSOR_MARK_PARAM, "gibberish", "sort", "id asc"))) {
+      assertJQ(req(p, "qt", "/get", "fl", "id", "id", "yyy"), "=={'doc':{'id':'yyy'}}");
+      assertJQ(
+          req(p, "qt", "/get", "fl", "id", "id", "xxx") // doesn't exist in our collection
+          ,
+          "=={'doc':null}");
     }
   }
 
-
   /** simple static test of some carefully crafted docs */
   public void testSimple() throws Exception {
     String cursorMark;
     SolrParams params = null;
-    
+
     final String intsort = "int" + (random().nextBoolean() ? "" : "_dv");
     final String intmissingsort = intsort;
 
     // trivial base case: ensure cursorMark against an empty index doesn't blow up
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "*:*", 
-                    "rows","4",
-                    "fl", "id",
-                    "sort", "id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==0"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              );
+    params =
+        params(
+            "q", "*:*",
+            "rows", "4",
+            "fl", "id",
+            "sort", "id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==0",
+            "/response/start==0",
+            "/response/docs==[]");
     assertEquals(CURSOR_MARK_START, cursorMark);
 
-
     // don't add in order of any field to ensure we aren't inadvertently
     // counting on internal docid ordering
     assertU(adoc("id", "9", "str", "c", "float", "-3.2", "int", "42"));
@@ -185,289 +189,357 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
 
     // base case: ensure cursorMark that matches no docs doesn't blow up
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "id:9999999", 
-                    "rows","4",
-                    "fl", "id",
-                    "sort", "id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==0"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              );
+    params =
+        params(
+            "q", "id:9999999",
+            "rows", "4",
+            "fl", "id",
+            "sort", "id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==0",
+            "/response/start==0",
+            "/response/docs==[]");
     assertEquals(CURSOR_MARK_START, cursorMark);
 
     // edge case: ensure rows=0 doesn't blow up and gives back same cursor for next
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "*:*", 
-                    "rows","0",
-                    "fl", "id",
-                    "sort", "id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              );
+    params =
+        params(
+            "q", "*:*",
+            "rows", "0",
+            "fl", "id",
+            "sort", "id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[]");
     assertEquals(CURSOR_MARK_START, cursorMark);
 
     // simple id sort w/some faceting
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "-int:6", 
-                    "rows","4",
-                    "fl", "id",
-                    "sort", "id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==9"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'9'},{'id':'8'},{'id':'7'},{'id':'6'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==9" 
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'5'},{'id':'3'},{'id':'2'},{'id':'1'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==9" 
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'0'}]"
-                              );
+    params =
+        params(
+            "q", "-int:6",
+            "rows", "4",
+            "fl", "id",
+            "sort", "id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==9",
+            "/response/start==0",
+            "/response/docs==[{'id':'9'},{'id':'8'},{'id':'7'},{'id':'6'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==9",
+            "/response/start==0",
+            "/response/docs==[{'id':'5'},{'id':'3'},{'id':'2'},{'id':'1'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==9",
+            "/response/start==0",
+            "/response/docs==[{'id':'0'}]");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark, 
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==9"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==9",
+            "/response/start==0",
+            "/response/docs==[]"));
 
     // simple score sort w/some faceting
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "float:[0 TO *] int:7 id:6", 
-                    "rows","4",
-                    "fl", "id",
-                    "facet", "true",
-                    "facet.field", "str",
-                    "json.nl", "map",
-                    "sort", "score desc, id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==7"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'6'},{'id':'1'},{'id':'8'},{'id':'5'}]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':3,'c':0}"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==7"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'4'},{'id':'3'},{'id':'0'}]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':3,'c':0}"
-                              );
+    params =
+        params(
+            "q", "float:[0 TO *] int:7 id:6",
+            "rows", "4",
+            "fl", "id",
+            "facet", "true",
+            "facet.field", "str",
+            "json.nl", "map",
+            "sort", "score desc, id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==7",
+            "/response/start==0",
+            "/response/docs==[{'id':'6'},{'id':'1'},{'id':'8'},{'id':'5'}]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':3,'c':0}");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==7",
+            "/response/start==0",
+            "/response/docs==[{'id':'4'},{'id':'3'},{'id':'0'}]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':3,'c':0}");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==7"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':3,'c':0}"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==7",
+            "/response/start==0",
+            "/response/docs==[]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':3,'c':0}"));
 
     // int sort with dups, id tie breaker ... and some faceting
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "-int:2001 -int:4055", 
-                    "rows","3",
-                    "fl", "id",
-                    "facet", "true",
-                    "facet.field", "str",
-                    "json.nl", "map",
-                    "sort", intsort + " asc, id asc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'7'},{'id':'0'},{'id':'3'}]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'4'},{'id':'1'},{'id':'6'}]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'9'},{'id':'2'}]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}"
-                              );
+    params =
+        params(
+            "q", "-int:2001 -int:4055",
+            "rows", "3",
+            "fl", "id",
+            "facet", "true",
+            "facet.field", "str",
+            "json.nl", "map",
+            "sort", intsort + " asc, id asc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'7'},{'id':'0'},{'id':'3'}]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'4'},{'id':'1'},{'id':'6'}]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'9'},{'id':'2'}]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8" 
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ,"/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[]",
+            "/facet_counts/facet_fields/str=={'a':4,'b':1,'c':3}"));
 
     // int missing first sort with dups, id tie breaker
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "-int:2001 -int:4055", 
-                    "rows","3",
-                    "fl", "id",
-                    "json.nl", "map",
-                    "sort", intmissingsort + "_first asc, id asc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'3'},{'id':'7'},{'id':'0'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'4'},{'id':'1'},{'id':'6'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'9'},{'id':'2'}]"
-                              );
+    params =
+        params(
+            "q", "-int:2001 -int:4055",
+            "rows", "3",
+            "fl", "id",
+            "json.nl", "map",
+            "sort", intmissingsort + "_first asc, id asc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'3'},{'id':'7'},{'id':'0'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'4'},{'id':'1'},{'id':'6'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'9'},{'id':'2'}]");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8" 
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[]"));
 
     // int missing last sort with dups, id tie breaker
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "-int:2001 -int:4055", 
-                    "rows","3",
-                    "fl", "id",
-                    "json.nl", "map",
-                    "sort", intmissingsort + "_last asc, id asc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'7'},{'id':'0'},{'id':'4'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'1'},{'id':'6'},{'id':'9'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'2'},{'id':'3'}]"
-                              );
+    params =
+        params(
+            "q", "-int:2001 -int:4055",
+            "rows", "3",
+            "fl", "id",
+            "json.nl", "map",
+            "sort", intmissingsort + "_last asc, id asc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'7'},{'id':'0'},{'id':'4'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'1'},{'id':'6'},{'id':'9'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'2'},{'id':'3'}]");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8" 
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[]"));
 
     // string sort with dups, id tie breaker
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "*:*", 
-                    "rows","6",
-                    "fl", "id",
-                    "sort", "str asc, id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'6'},{'id':'4'},{'id':'3'},{'id':'1'},{'id':'8'},{'id':'5'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'0'},{'id':'9'},{'id':'7'},{'id':'2'}]"
-                              );
+    params =
+        params(
+            "q", "*:*",
+            "rows", "6",
+            "fl", "id",
+            "sort", "str asc, id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'6'},{'id':'4'},{'id':'3'},{'id':'1'},{'id':'8'},{'id':'5'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'0'},{'id':'9'},{'id':'7'},{'id':'2'}]");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[]"));
 
     // tri-level sort with more dups of primary then fit on a page
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "*:*", 
-                    "rows","2",
-                    "fl", "id",
-                    "sort", "float asc, "+intsort+" desc, id desc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'2'},{'id':'9'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'7'},{'id':'4'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10" 
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'3'},{'id':'8'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'5'},{'id':'6'}]"
-                              );
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'1'},{'id':'0'}]"
-                              );
+    params =
+        params(
+            "q", "*:*",
+            "rows", "2",
+            "fl", "id",
+            "sort", "float asc, " + intsort + " desc, id desc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'2'},{'id':'9'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'7'},{'id':'4'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'3'},{'id':'8'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'5'},{'id':'6'}]");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'1'},{'id':'0'}]");
     // we've exactly exhausted all the results, but solr had no way of know that
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[]"));
 
     // trivial base case: rows bigger then number of matches
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "id:3 id:7", 
-                    "rows","111",
-                    "fl", "id",
-                    "sort", intsort + " asc, id asc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==2"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'7'},{'id':'3'}]"
-                              );
+    params =
+        params(
+            "q", "id:3 id:7",
+            "rows", "111",
+            "fl", "id",
+            "sort", intsort + " asc, id asc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==2",
+            "/response/start==0",
+            "/response/docs==[{'id':'7'},{'id':'3'}]");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==2"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==2",
+            "/response/start==0",
+            "/response/docs==[]"));
 
     // sanity check our full walk method
     SentinelIntSet ids;
-    ids = assertFullWalkNoDups(10, params("q", "*:*", 
-                                          "rows", "4",
-                                          "sort", "id desc"));
+    ids =
+        assertFullWalkNoDups(
+            10,
+            params(
+                "q", "*:*",
+                "rows", "4",
+                "sort", "id desc"));
     assertEquals(10, ids.size());
-    ids = assertFullWalkNoDups(9, params("q", "*:*", 
-                                         "rows", "1",
-                                         "fq", "-id:4",
-                                         "sort", "id asc"));
+    ids =
+        assertFullWalkNoDups(
+            9,
+            params(
+                "q", "*:*",
+                "rows", "1",
+                "fq", "-id:4",
+                "sort", "id asc"));
     assertEquals(9, ids.size());
     assertFalse("matched on id:4 unexpectedly", ids.exists(4));
-    ids = assertFullWalkNoDups(9, params("q", "*:*", 
-                                         "rows", "3",
-                                         "fq", "-id:6",
-                                         "sort", "float desc, id asc, "+intsort+" asc"));
+    ids =
+        assertFullWalkNoDups(
+            9,
+            params(
+                "q", "*:*",
+                "rows", "3",
+                "fq", "-id:6",
+                "sort", "float desc, id asc, " + intsort + " asc"));
     assertEquals(9, ids.size());
     assertFalse("matched on id:6 unexpectedly", ids.exists(6));
-    ids = assertFullWalkNoDups(9, params("q", "float:[0 TO *] int:7 id:6", 
-                                         "rows", "3",
-                                         "sort", "score desc, id desc"));
+    ids =
+        assertFullWalkNoDups(
+            9,
+            params(
+                "q", "float:[0 TO *] int:7 id:6",
+                "rows", "3",
+                "sort", "score desc, id desc"));
     assertEquals(7, ids.size());
     assertFalse("matched on id:9 unexpectedly", ids.exists(9));
     assertFalse("matched on id:7 unexpectedly", ids.exists(7));
@@ -475,71 +547,81 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
 
     // strategically delete/add some docs in the middle of walking the cursor
     cursorMark = CURSOR_MARK_START;
-    params = params("q", "*:*", 
-                    "rows","2",
-                    "fl", "id",
-                    "sort", "str asc, id asc");
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==10"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'1'},{'id':'3'}]"
-                              );
+    params =
+        params(
+            "q", "*:*",
+            "rows", "2",
+            "fl", "id",
+            "sort", "str asc, id asc");
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==10",
+            "/response/start==0",
+            "/response/docs==[{'id':'1'},{'id':'3'}]");
     // delete the last guy we got
-    assertU(delI("3")); 
+    assertU(delI("3"));
     assertU(commit());
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==9"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'4'},{'id':'6'}]"
-                              );
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==9",
+            "/response/start==0",
+            "/response/docs==[{'id':'4'},{'id':'6'}]");
     // delete the next guy we expect
-    assertU(delI("0")); 
+    assertU(delI("0"));
     assertU(commit());
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'5'},{'id':'8'}]"
-                              );
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'5'},{'id':'8'}]");
     // update a doc we've already seen so it repeats
     assertU(adoc("id", "5", "str", "c"));
     assertU(commit());
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'2'},{'id':'5'}]"
-                              );
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'2'},{'id':'5'}]");
     // update the next doc we expect so it's now in the past
     assertU(adoc("id", "7", "str", "a"));
     assertU(commit());
-    cursorMark = assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[{'id':'9'}]"
-                              );
+    cursorMark =
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[{'id':'9'}]");
     // no more, so no change to cursorMark, and no new docs
-    assertEquals(cursorMark,
-                 assertCursor(req(params, CURSOR_MARK_PARAM, cursorMark)
-                              ,"/response/numFound==8"
-                              ,"/response/start==0"
-                              ,"/response/docs==[]"
-                              ));
+    assertEquals(
+        cursorMark,
+        assertCursor(
+            req(params, CURSOR_MARK_PARAM, cursorMark),
+            "/response/numFound==8",
+            "/response/start==0",
+            "/response/docs==[]"));
   }
 
   /**
-   * test that timeAllowed parameter can be used with cursors
-   * uses DelayingSearchComponent in solrconfig-deeppaging.xml
+   * test that timeAllowed parameter can be used with cursors uses DelayingSearchComponent in
+   * solrconfig-deeppaging.xml
    */
-  @LogLevel("org.apache.solr.search.SolrIndexSearcher=ERROR;org.apache.solr.handler.component.SearchHandler=ERROR")
+  @LogLevel(
+      "org.apache.solr.search.SolrIndexSearcher=ERROR;org.apache.solr.handler.component.SearchHandler=ERROR")
   public void testTimeAllowed() throws Exception {
     String wontExceedTimeout = "10000";
     int numDocs = 1000;
-    List<String> ids = IntStream.range(0, 1000).mapToObj(String::valueOf).collect(Collectors.toList());
+    List<String> ids =
+        IntStream.range(0, 1000).mapToObj(String::valueOf).collect(Collectors.toList());
     // Shuffle to test ordering
     Collections.shuffle(ids, random());
     for (String id : ids) {
       assertU(adoc("id", id, "name", "a" + id));
       if (random().nextInt(numDocs) == 0) {
-        assertU(commit());  // sometimes make multiple segments
+        assertU(commit()); // sometimes make multiple segments
       }
     }
     assertU(commit());
@@ -548,12 +630,20 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
 
     String cursorMark, nextCursorMark = CURSOR_MARK_START;
 
-    SolrParams params = params("q", "name:a*",
-        "fl", "id",
-        "sort", "id asc",
-        "rows", "50",
-        "qt", "/delayed",
-        "sleep", "10");
+    SolrParams params =
+        params(
+            "q",
+            "name:a*",
+            "fl",
+            "id",
+            "sort",
+            "id asc",
+            "rows",
+            "50",
+            "qt",
+            "/delayed",
+            "sleep",
+            "10");
 
     List<String> foundDocIds = new ArrayList<>();
     String[] timeAllowedVariants = {"1", "50", wontExceedTimeout};
@@ -563,7 +653,8 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       for (String timeAllowed : timeAllowedVariants) {
 
         // execute the query
-        String json = assertJQ(req(params, CURSOR_MARK_PARAM, cursorMark, TIME_ALLOWED, timeAllowed));
+        String json =
+            assertJQ(req(params, CURSOR_MARK_PARAM, cursorMark, TIME_ALLOWED, timeAllowed));
 
         Map<?, ?> response = (Map<?, ?>) fromJSONString(json);
         Map<?, ?> responseHeader = (Map<?, ?>) response.get("responseHeader");
@@ -594,15 +685,18 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     // Note: it is not guaranteed that all docs will be found, because a query may time out
     // before reaching all segments, this causes documents in the skipped segments to be skipped
     // in the overall result set as the cursor pages through.
-    assertEquals("Should have found last doc id eventually", ids.get(ids.size() -1), foundDocIds.get(foundDocIds.size() -1));
-    assertEquals("Documents arrived in sorted order within and between pages", sortedFoundDocIds, foundDocIds);
+    assertEquals(
+        "Should have found last doc id eventually",
+        ids.get(ids.size() - 1),
+        foundDocIds.get(foundDocIds.size() - 1));
+    assertEquals(
+        "Documents arrived in sorted order within and between pages",
+        sortedFoundDocIds,
+        foundDocIds);
     assertTrue("Should have experienced at least one partialResult", partialCount > 0);
   }
 
-
-  /**
-   * test that our assumptions about how caches are affected hold true
-   */
+  /** test that our assumptions about how caches are affected hold true */
   public void testCacheImpacts() throws Exception {
     // cursor queries can't live in the queryResultCache, but independent filters
     // should still be cached & reused
@@ -624,46 +718,61 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     final Collection<String> allFieldNames = getAllSortFieldNames();
 
     final MetricsMap filterCacheStats =
-        (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.filterCache")).getGauge();
+        (MetricsMap)
+            ((SolrMetricManager.GaugeWrapper)
+                    h.getCore()
+                        .getCoreMetricManager()
+                        .getRegistry()
+                        .getMetrics()
+                        .get("CACHE.searcher.filterCache"))
+                .getGauge();
     assertNotNull(filterCacheStats);
     final MetricsMap queryCacheStats =
-        (MetricsMap)((SolrMetricManager.GaugeWrapper)h.getCore().getCoreMetricManager().getRegistry().getMetrics().get("CACHE.searcher.queryResultCache")).getGauge();
+        (MetricsMap)
+            ((SolrMetricManager.GaugeWrapper)
+                    h.getCore()
+                        .getCoreMetricManager()
+                        .getRegistry()
+                        .getMetrics()
+                        .get("CACHE.searcher.queryResultCache"))
+                .getGauge();
     assertNotNull(queryCacheStats);
 
     final long preQcIn = (Long) queryCacheStats.getValue().get("inserts");
     final long preFcIn = (Long) filterCacheStats.getValue().get("inserts");
     final long preFcHits = (Long) filterCacheStats.getValue().get("hits");
 
-    SentinelIntSet ids = assertFullWalkNoDups
-      (10, params("q", "*:*",
-                  "rows",""+ TestUtil.nextInt(random(), 1, 11),
-                  "fq", "-id:[1 TO 2]",
-                  "fq", "-id:[6 TO 7]",
-                  "fl", "id",
-                  "sort", buildRandomSort(allFieldNames)));
-    
+    SentinelIntSet ids =
+        assertFullWalkNoDups(
+            10,
+            params(
+                "q", "*:*",
+                "rows", "" + TestUtil.nextInt(random(), 1, 11),
+                "fq", "-id:[1 TO 2]",
+                "fq", "-id:[6 TO 7]",
+                "fl", "id",
+                "sort", buildRandomSort(allFieldNames)));
+
     assertEquals(6, ids.size());
 
     final long postQcIn = (Long) queryCacheStats.getValue().get("inserts");
     final long postFcIn = (Long) filterCacheStats.getValue().get("inserts");
     final long postFcHits = (Long) filterCacheStats.getValue().get("hits");
-    
+
     assertEquals("query cache inserts changed", preQcIn, postQcIn);
     // NOTE: use of pure negative filters clauses "*:* to be tracked in filterCache
-    assertEquals("filter cache did not grow correctly", 3, postFcIn-preFcIn);
-    assertTrue("filter cache did not have any new cache hits", 0 < postFcHits-preFcHits);
-
+    assertEquals("filter cache did not grow correctly", 3, postFcIn - preFcIn);
+    assertTrue("filter cache did not have any new cache hits", 0 < postFcHits - preFcHits);
   }
 
-  /** randomized testing of a non-trivial number of docs using assertFullWalkNoDups 
-   */
+  /** randomized testing of a non-trivial number of docs using assertFullWalkNoDups */
   public void testRandomSortsOnLargeIndex() throws Exception {
     final Collection<String> allFieldNames = getAllSortFieldNames();
 
     final int initialDocs = TestUtil.nextInt(random(), 100, 200);
     final int totalDocs = atLeast(500);
 
-    // start with a smallish number of documents, and test that we can do a full walk using a 
+    // start with a smallish number of documents, and test that we can do a full walk using a
     // sort on *every* field in the schema...
 
     for (int i = 1; i <= initialDocs; i++) {
@@ -676,20 +785,22 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       for (String order : new String[] {" asc", " desc"}) {
         String sort = f + order + ("id".equals(f) ? "" : ", id" + order);
         String rows = "" + TestUtil.nextInt(random(), 13, 50);
-        final SolrParams main = params("q", "*:*",
-                                       "fl","id",
-                                       "rows",rows,
-                                       "sort",sort);
+        final SolrParams main = params("q", "*:*", "fl", "id", "rows", rows, "sort", sort);
         final SentinelIntSet ids = assertFullWalkNoDups(totalDocs, main);
         assertEquals(initialDocs, ids.size());
 
-        // same query, now with QEC ... verify we get all the same docs, but the (expected) elevated docs are first...
-        final SentinelIntSet elevated = assertFullWalkNoDupsElevated(wrapDefaults(params("qt", "/elevate",
-                                                                                         "fl","id,[elevated]",
-                                                                                         "forceElevation","true",
-                                                                                         "elevateIds", "50,20,80"),
-                                                                                  main),
-                                                                     ids);
+        // same query, now with QEC ... verify we get all the same docs, but the (expected) elevated
+        // docs are first...
+        final SentinelIntSet elevated =
+            assertFullWalkNoDupsElevated(
+                wrapDefaults(
+                    params(
+                        "qt", "/elevate",
+                        "fl", "id,[elevated]",
+                        "forceElevation", "true",
+                        "elevateIds", "50,20,80"),
+                    main),
+                ids);
         assertTrue(elevated.exists(50));
         assertTrue(elevated.exists(20));
         assertTrue(elevated.exists(80));
@@ -698,7 +809,7 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     }
 
     // now add a lot more docs, and test a handful of randomized sorts
-    for (int i = initialDocs+1; i <= totalDocs; i++) {
+    for (int i = initialDocs + 1; i <= totalDocs; i++) {
       SolrInputDocument doc = buildRandomDocument(i);
       assertU(adoc(doc));
     }
@@ -711,59 +822,70 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       final String fl = random().nextBoolean() ? "id" : "id,score";
       final boolean matchAll = random().nextBoolean();
       final String q = matchAll ? "*:*" : buildRandomQuery();
-      final SolrParams main = params("q", q,
-                                     "fl",fl,
-                                     "rows",rows,
-                                     "sort",sort);
+      final SolrParams main =
+          params(
+              "q", q,
+              "fl", fl,
+              "rows", rows,
+              "sort", sort);
       final SentinelIntSet ids = assertFullWalkNoDups(totalDocs, main);
       if (matchAll) {
         assertEquals(totalDocs, ids.size());
       }
 
-      // same query, now with QEC ... verify we get all the same docs, but the (expected) elevated docs are first...
+      // same query, now with QEC ... verify we get all the same docs, but the (expected) elevated
+      // docs are first...
       // first we have to build a set of ids to elevate, from the set of ids known to match query...
       final int[] expectedElevated = pickElevations(TestUtil.nextInt(random(), 3, 33), ids);
-      final SentinelIntSet elevated = assertFullWalkNoDupsElevated
-        (wrapDefaults(params("qt", "/elevate",
-                             "fl", fl + ",[elevated]",
-                             // HACK: work around SOLR-15307... same results should match, just not same order
-                             "sort", (sort.startsWith("score asc") ? "score desc, " + sort : sort),
-                             "forceElevation","true",
-                             "elevateIds", StringUtils.join(expectedElevated,',')),
-                      main),
-         ids);
+      final SentinelIntSet elevated =
+          assertFullWalkNoDupsElevated(
+              wrapDefaults(
+                  params(
+                      "qt",
+                      "/elevate",
+                      "fl",
+                      fl + ",[elevated]",
+                      // HACK: work around SOLR-15307... same results should match, just not same
+                      // order
+                      "sort",
+                      (sort.startsWith("score asc") ? "score desc, " + sort : sort),
+                      "forceElevation",
+                      "true",
+                      "elevateIds",
+                      StringUtils.join(expectedElevated, ',')),
+                  main),
+              ids);
       for (int expected : expectedElevated) {
-        assertTrue(expected + " wasn't elevated even though it should have been",
-                   elevated.exists(expected));
+        assertTrue(
+            expected + " wasn't elevated even though it should have been",
+            elevated.exists(expected));
       }
       assertEquals(expectedElevated.length, elevated.size());
     }
   }
 
-  /** Similar to usually() but we want it to happen just as often regardless
-   * of test multiplier and nightly status 
+  /**
+   * Similar to usually() but we want it to happen just as often regardless of test multiplier and
+   * nightly status
    */
   private static boolean useField() {
     return 0 != TestUtil.nextInt(random(), 0, 30);
   }
-  
+
   /**
-   * An immutable list of the fields in the schema that can be used for sorting,
-   * deterministically random order.
+   * An immutable list of the fields in the schema that can be used for sorting, deterministically
+   * random order.
    */
   private List<String> getAllSortFieldNames() {
-    return pruneAndDeterministicallySort
-      (h.getCore().getLatestSchema().getFields().keySet());
+    return pruneAndDeterministicallySort(h.getCore().getLatestSchema().getFields().keySet());
   }
 
-  
   /**
-   * <p>
-   * Given a list of field names in the schema, returns an immutable list in 
-   * deterministically random order with the following things removed:
-   * </p>
+   * Given a list of field names in the schema, returns an immutable list in deterministically
+   * random order with the following things removed:
+   *
    * <ul>
-   *  <li><code>_version_</code> is removed</li>
+   *   <li><code>_version_</code> is removed
    * </ul>
    */
   public static List<String> pruneAndDeterministicallySort(Collection<String> raw) {
@@ -777,119 +899,119 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     }
 
     Collections.sort(names);
-    Collections.shuffle(names,random());
+    Collections.shuffle(names, random());
     return Collections.<String>unmodifiableList(names);
   }
 
   /**
    * Given a set of params, executes a cursor query using {@link CursorMarkParams#CURSOR_MARK_START}
-   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as long
-   * as a non-0 number of docs ar returned.  This method records the the set of all id's
-   * (must be positive ints) encountered and throws an assertion failure if any id is
-   * encountered more than once, or if an id is encountered which is not expected, 
-   * or if an id is <code>[elevated]</code> and comes "after" any ids which were not <code>[elevated]</code>
-   * 
+   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as
+   * long as a non-0 number of docs ar returned. This method records the the set of all id's (must
+   * be positive ints) encountered and throws an assertion failure if any id is encountered more
+   * than once, or if an id is encountered which is not expected, or if an id is <code>[elevated]
+   * </code> and comes "after" any ids which were not <code>[elevated]</code>
    *
    * @returns set of all elevated ids encountered in the walk
    * @see #assertFullWalkNoDups(SolrParams,Consumer)
    */
-  public SentinelIntSet assertFullWalkNoDupsElevated(final SolrParams params, final SentinelIntSet allExpected)
-    throws Exception {
+  public SentinelIntSet assertFullWalkNoDupsElevated(
+      final SolrParams params, final SentinelIntSet allExpected) throws Exception {
 
     final SentinelIntSet ids = new SentinelIntSet(allExpected.size(), -1);
     final SentinelIntSet idsElevated = new SentinelIntSet(32, -1);
 
-    assertFullWalkNoDups(params, (doc) -> {
-        final int id = Integer.parseInt(doc.get("id").toString());
-        final boolean elevated = Boolean.parseBoolean(doc.getOrDefault("[elevated]","false").toString());
-        assertTrue(id + " is not expected to match query",
-                   allExpected.exists(id));
-        assertFalse("walk already seen: " + id,
-                    ids.exists(id));
-        if (elevated) {
-          assertEquals("id is elevated, but we've already seen non elevated ids: " + id,
-                       idsElevated.size(), ids.size());
-          idsElevated.put(id);
-        }
-        ids.put(id);
-      });
-    assertEquals("total number of ids seen did not match expected",
-                 allExpected.size(), ids.size());
-    
+    assertFullWalkNoDups(
+        params,
+        (doc) -> {
+          final int id = Integer.parseInt(doc.get("id").toString());
+          final boolean elevated =
+              Boolean.parseBoolean(doc.getOrDefault("[elevated]", "false").toString());
+          assertTrue(id + " is not expected to match query", allExpected.exists(id));
+          assertFalse("walk already seen: " + id, ids.exists(id));
+          if (elevated) {
+            assertEquals(
+                "id is elevated, but we've already seen non elevated ids: " + id,
+                idsElevated.size(),
+                ids.size());
+            idsElevated.put(id);
+          }
+          ids.put(id);
+        });
+    assertEquals("total number of ids seen did not match expected", allExpected.size(), ids.size());
+
     return idsElevated;
   }
 
-  
   /**
    * Given a set of params, executes a cursor query using {@link CursorMarkParams#CURSOR_MARK_START}
-   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as long
-   * as a non-0 number of docs ar returned.  This method records the the set of all id's
-   * (must be positive ints) encountered and throws an assertion failure if any id is
-   * encountered more than once, or if the set grows above maxSize
+   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as
+   * long as a non-0 number of docs ar returned. This method records the the set of all id's (must
+   * be positive ints) encountered and throws an assertion failure if any id is encountered more
+   * than once, or if the set grows above maxSize
    *
    * @returns set of all ids encountered in the walk
    * @see #assertFullWalkNoDups(SolrParams,Consumer)
    */
-  public SentinelIntSet assertFullWalkNoDups(int maxSize, SolrParams params) 
-    throws Exception {
+  public SentinelIntSet assertFullWalkNoDups(int maxSize, SolrParams params) throws Exception {
     final SentinelIntSet ids = new SentinelIntSet(maxSize, -1);
-    assertFullWalkNoDups(params, (doc) -> {
-        int id = Integer.parseInt(doc.get("id").toString());
-        assertFalse("walk already seen: " + id, ids.exists(id));
-        ids.put(id);
-        assertFalse("id set bigger then max allowed ("+maxSize+"): " + ids.size(),
-                    maxSize < ids.size());
-        
-      });
+    assertFullWalkNoDups(
+        params,
+        (doc) -> {
+          int id = Integer.parseInt(doc.get("id").toString());
+          assertFalse("walk already seen: " + id, ids.exists(id));
+          ids.put(id);
+          assertFalse(
+              "id set bigger then max allowed (" + maxSize + "): " + ids.size(),
+              maxSize < ids.size());
+        });
     return ids;
   }
-  
+
   /**
    * Given a set of params, executes a cursor query using {@link CursorMarkParams#CURSOR_MARK_START}
-   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as long
-   * as a non-0 number of docs ar returned.  This method does some basic validation of each response, and then 
-   * passes each doc encountered (in order returned) to the specified Consumer, which may throw an assertion if 
-   * there is a problem. 
+   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as
+   * long as a non-0 number of docs ar returned. This method does some basic validation of each
+   * response, and then passes each doc encountered (in order returned) to the specified Consumer,
+   * which may throw an assertion if there is a problem.
    */
-  public void assertFullWalkNoDups(SolrParams params, Consumer<Map<Object,Object>> consumer)
-    throws Exception {
-    
+  public void assertFullWalkNoDups(SolrParams params, Consumer<Map<Object, Object>> consumer)
+      throws Exception {
+
     String cursorMark = CURSOR_MARK_START;
     int docsOnThisPage = Integer.MAX_VALUE;
     while (0 < docsOnThisPage) {
-      String json = assertJQ(req(params,
-                                 CURSOR_MARK_PARAM, cursorMark));
+      String json = assertJQ(req(params, CURSOR_MARK_PARAM, cursorMark));
       Map<?, ?> rsp = (Map<?, ?>) fromJSONString(json);
-      assertTrue("response doesn't contain " + CURSOR_MARK_NEXT + ": " + json,
-                 rsp.containsKey(CURSOR_MARK_NEXT));
-      String nextCursorMark = (String)rsp.get(CURSOR_MARK_NEXT);
+      assertTrue(
+          "response doesn't contain " + CURSOR_MARK_NEXT + ": " + json,
+          rsp.containsKey(CURSOR_MARK_NEXT));
+      String nextCursorMark = (String) rsp.get(CURSOR_MARK_NEXT);
       assertNotNull(CURSOR_MARK_NEXT + " is null", nextCursorMark);
       @SuppressWarnings("unchecked")
-      List<Map<Object,Object>> docs = (List<Map<Object, Object>>) (((Map<?, ?>)rsp.get("response")).get("docs"));
+      List<Map<Object, Object>> docs =
+          (List<Map<Object, Object>>) (((Map<?, ?>) rsp.get("response")).get("docs"));
       docsOnThisPage = docs.size();
       if (null != params.getInt(CommonParams.ROWS)) {
         int rows = params.getInt(CommonParams.ROWS);
-        assertTrue("Too many docs on this page: " + rows + " < " + docsOnThisPage,
-                   docsOnThisPage <= rows);
+        assertTrue(
+            "Too many docs on this page: " + rows + " < " + docsOnThisPage, docsOnThisPage <= rows);
       }
       if (0 == docsOnThisPage) {
-        assertEquals("no more docs, but "+CURSOR_MARK_NEXT+" isn't same",
-                     cursorMark, nextCursorMark);
+        assertEquals(
+            "no more docs, but " + CURSOR_MARK_NEXT + " isn't same", cursorMark, nextCursorMark);
       }
-      for (Map<Object,Object> doc : docs) {
+      for (Map<Object, Object> doc : docs) {
         consumer.accept(doc);
       }
       cursorMark = nextCursorMark;
     }
   }
 
-  /**
-   * test faceting with deep paging
-   */
+  /** test faceting with deep paging */
   public void testFacetingWithRandomSorts() throws Exception {
     final int numDocs = TestUtil.nextInt(random(), 1000, 3000);
-    String[] fieldsToFacetOn = { "int", "long", "str" };
-    String[] facetMethods = { "enum", "fc", "fcs" };
+    String[] fieldsToFacetOn = {"int", "long", "str"};
+    String[] facetMethods = {"enum", "fc", "fcs"};
 
     for (int i = 1; i <= numDocs; i++) {
       SolrInputDocument doc = buildRandomDocument(i);
@@ -904,31 +1026,41 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     String order = 0 == TestUtil.nextInt(random(), 0, 1) ? " asc" : " desc";
     String sort = f + order + (f.equals("id") ? "" : ", id" + order);
     String rows = "" + TestUtil.nextInt(random(), 13, 50);
-    String facetField = fieldsToFacetOn
-        [TestUtil.nextInt(random(), 0, fieldsToFacetOn.length - 1)];
-    String facetMethod = facetMethods
-        [TestUtil.nextInt(random(), 0, facetMethods.length - 1)];
-    SentinelIntSet ids = assertFullWalkNoDupsWithFacets
-        (numDocs, params("q", "*:*",
-            "fl", "id," + facetField,
-            "facet", "true",
-            "facet.field", facetField,
-            "facet.method", facetMethod,
-            "facet.missing", "true",
-            "facet.limit", "-1", // unlimited
-            "rows", rows,
-            "sort", sort));
+    String facetField = fieldsToFacetOn[TestUtil.nextInt(random(), 0, fieldsToFacetOn.length - 1)];
+    String facetMethod = facetMethods[TestUtil.nextInt(random(), 0, facetMethods.length - 1)];
+    SentinelIntSet ids =
+        assertFullWalkNoDupsWithFacets(
+            numDocs,
+            params(
+                "q",
+                "*:*",
+                "fl",
+                "id," + facetField,
+                "facet",
+                "true",
+                "facet.field",
+                facetField,
+                "facet.method",
+                facetMethod,
+                "facet.missing",
+                "true",
+                "facet.limit",
+                "-1", // unlimited
+                "rows",
+                rows,
+                "sort",
+                sort));
     assertEquals(numDocs, ids.size());
   }
 
   /**
    * Given a set of params, executes a cursor query using {@link CursorMarkParams#CURSOR_MARK_START}
-   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as long
-   * as a non-0 number of docs ar returned.  This method records the the set of all id's
-   * (must be positive ints) encountered and throws an assertion failure if any id is
-   * encountered more than once, or if the set grows above maxSize.
+   * and then continuously walks the results using {@link CursorMarkParams#CURSOR_MARK_START} as
+   * long as a non-0 number of docs ar returned. This method records the the set of all id's (must
+   * be positive ints) encountered and throws an assertion failure if any id is encountered more
+   * than once, or if the set grows above maxSize.
    *
-   * Also checks that facets are the same with each page, and that they are correct.
+   * <p>Also checks that facets are the same with each page, and that they are correct.
    */
   public SentinelIntSet assertFullWalkNoDupsWithFacets(int maxSize, SolrParams params)
       throws Exception {
@@ -937,7 +1069,7 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     assertNotNull("facet.field param not specified", facetField);
     assertFalse("facet.field param contains multiple values", facetField.contains(","));
     assertEquals("facet.limit param not set to -1", "-1", params.get("facet.limit"));
-    final Map<String,MutableValueInt> facetCounts = new HashMap<>();
+    final Map<String, MutableValueInt> facetCounts = new HashMap<>();
     SentinelIntSet ids = new SentinelIntSet(maxSize, -1);
     String cursorMark = CURSOR_MARK_START;
     int docsOnThisPage = Integer.MAX_VALUE;
@@ -945,28 +1077,31 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     while (0 < docsOnThisPage) {
       String json = assertJQ(req(params, CURSOR_MARK_PARAM, cursorMark));
       Map<?, ?> rsp = (Map<?, ?>) fromJSONString(json);
-      assertTrue("response doesn't contain " + CURSOR_MARK_NEXT + ": " + json,
-                 rsp.containsKey(CURSOR_MARK_NEXT));
-      String nextCursorMark = (String)rsp.get(CURSOR_MARK_NEXT);
+      assertTrue(
+          "response doesn't contain " + CURSOR_MARK_NEXT + ": " + json,
+          rsp.containsKey(CURSOR_MARK_NEXT));
+      String nextCursorMark = (String) rsp.get(CURSOR_MARK_NEXT);
       assertNotNull(CURSOR_MARK_NEXT + " is null", nextCursorMark);
       @SuppressWarnings({"unchecked"})
-      List<Map<Object,Object>> docs = (List<Map<Object, Object>>)(((Map<?, ?>)rsp.get("response")).get("docs"));
+      List<Map<Object, Object>> docs =
+          (List<Map<Object, Object>>) (((Map<?, ?>) rsp.get("response")).get("docs"));
       docsOnThisPage = docs.size();
       if (null != params.getInt(CommonParams.ROWS)) {
         int rows = params.getInt(CommonParams.ROWS);
-        assertTrue("Too many docs on this page: " + rows + " < " + docsOnThisPage,
-                   docsOnThisPage <= rows);
+        assertTrue(
+            "Too many docs on this page: " + rows + " < " + docsOnThisPage, docsOnThisPage <= rows);
       }
       if (0 == docsOnThisPage) {
-        assertEquals("no more docs, but "+CURSOR_MARK_NEXT+" isn't same",
-                     cursorMark, nextCursorMark);
+        assertEquals(
+            "no more docs, but " + CURSOR_MARK_NEXT + " isn't same", cursorMark, nextCursorMark);
       }
-      for (Map<Object,Object> doc : docs) {
+      for (Map<Object, Object> doc : docs) {
         int id = Integer.parseInt(doc.get("id").toString());
         assertFalse("walk already seen: " + id, ids.exists(id));
         ids.put(id);
-        assertFalse("id set bigger then max allowed ("+maxSize+"): " + ids.size(),
-                    maxSize < ids.size());
+        assertFalse(
+            "id set bigger then max allowed (" + maxSize + "): " + ids.size(),
+            maxSize < ids.size());
         Object facet = doc.get(facetField);
         String facetString = null == facet ? null : facet.toString(); // null: missing facet value
         MutableValueInt count = facetCounts.get(facetString);
@@ -978,14 +1113,16 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       }
       cursorMark = nextCursorMark;
 
-      Map<?, ?> facetFields = (Map<?, ?>)((Map<?, ?>)rsp.get("facet_counts")).get("facet_fields");
-      List<?> facets = (List<?>)facetFields.get(facetField);
+      Map<?, ?> facetFields = (Map<?, ?>) ((Map<?, ?>) rsp.get("facet_counts")).get("facet_fields");
+      List<?> facets = (List<?>) facetFields.get(facetField);
       if (null != previousFacets) {
-        assertEquals("Facets not the same as on previous page:\nprevious page facets: "
-            + Arrays.toString(facets.toArray(new Object[facets.size()]))
-            + "\ncurrent page facets: "
-            + Arrays.toString(previousFacets.toArray(new Object[previousFacets.size()])),
-            previousFacets, facets);
+        assertEquals(
+            "Facets not the same as on previous page:\nprevious page facets: "
+                + Arrays.toString(facets.toArray(new Object[facets.size()]))
+                + "\ncurrent page facets: "
+                + Arrays.toString(previousFacets.toArray(new Object[previousFacets.size()])),
+            previousFacets,
+            facets);
       }
       previousFacets = facets;
     }
@@ -993,47 +1130,51 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     assertNotNull("previousFacets is null", previousFacets);
     assertEquals("Mismatch in number of facets: ", facetCounts.size(), previousFacets.size() / 2);
     int pos;
-    for (pos = 0 ; pos < previousFacets.size() ; pos += 2) {
-      String label = (String)previousFacets.get(pos);
-      int expectedCount = ((Number)previousFacets.get(pos + 1)).intValue();
+    for (pos = 0; pos < previousFacets.size(); pos += 2) {
+      String label = (String) previousFacets.get(pos);
+      int expectedCount = ((Number) previousFacets.get(pos + 1)).intValue();
       MutableValueInt count = facetCounts.get(label);
       assertNotNull("Expected facet label #" + (pos / 2) + " not found: '" + label + "'", count);
-      assertEquals("Facet count mismatch for label #" + (pos / 2) + " '" + label + "'", expectedCount,
-                   facetCounts.get(label).value);
+      assertEquals(
+          "Facet count mismatch for label #" + (pos / 2) + " '" + label + "'",
+          expectedCount,
+          facetCounts.get(label).value);
       pos += 2;
     }
     return ids;
   }
 
   /**
-   * Asserts that the query matches the specified JSON patterns and then returns the
-   * {@link CursorMarkParams#CURSOR_MARK_NEXT} value from the response
+   * Asserts that the query matches the specified JSON patterns and then returns the {@link
+   * CursorMarkParams#CURSOR_MARK_NEXT} value from the response
    *
    * @see #assertJQ
    */
   public String assertCursor(SolrQueryRequest req, String... tests) throws Exception {
     String json = assertJQ(req, tests);
     Map<?, ?> rsp = (Map<?, ?>) fromJSONString(json);
-    assertTrue("response doesn't contain "+CURSOR_MARK_NEXT + ": " + json,
-               rsp.containsKey(CURSOR_MARK_NEXT));
-    String next = (String)rsp.get(CURSOR_MARK_NEXT);
+    assertTrue(
+        "response doesn't contain " + CURSOR_MARK_NEXT + ": " + json,
+        rsp.containsKey(CURSOR_MARK_NEXT));
+    String next = (String) rsp.get(CURSOR_MARK_NEXT);
     assertNotNull(CURSOR_MARK_NEXT + " is null", next);
     return next;
   }
 
-  /**
-   * execute a local request, verify that we get an expected error
-   */
-  public void assertFail(SolrParams p, ErrorCode expCode, String expSubstr) 
-    throws Exception {
+  /** execute a local request, verify that we get an expected error */
+  public void assertFail(SolrParams p, ErrorCode expCode, String expSubstr) throws Exception {
 
     try {
-      SolrException e = expectThrows(SolrException.class, () -> {
-        ignoreException(expSubstr);
-        assertJQ(req(p));
-      });
+      SolrException e =
+          expectThrows(
+              SolrException.class,
+              () -> {
+                ignoreException(expSubstr);
+                assertJQ(req(p));
+              });
       assertEquals(expCode.code, e.code());
-      assertTrue("Expected substr not found: " + expSubstr + " <!< " + e.getMessage(),
+      assertTrue(
+          "Expected substr not found: " + expSubstr + " <!< " + e.getMessage(),
           e.getMessage().contains(expSubstr));
     } finally {
       unIgnoreException(expSubstr);
@@ -1041,10 +1182,10 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
   }
 
   /**
-   * Creates a document with randomized field values, some of which be missing values, 
-   * and some of which will be skewed so that small subsets of the ranges will be 
-   * more common (resulting in an increased likelihood of duplicate values)
-   * 
+   * Creates a document with randomized field values, some of which be missing values, and some of
+   * which will be skewed so that small subsets of the ranges will be more common (resulting in an
+   * increased likelihood of duplicate values)
+   *
    * @see #buildRandomQuery
    */
   public static SolrInputDocument buildRandomDocument(int id) {
@@ -1053,24 +1194,24 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     // if field is in a doc, then "skewed" chance val is from a dense range
     // (hopefully with lots of duplication)
     if (useField()) {
-      doc.addField("int", skewed(random().nextInt(), 
-                                 TestUtil.nextInt(random(), 20, 50)));
+      doc.addField("int", skewed(random().nextInt(), TestUtil.nextInt(random(), 20, 50)));
     }
     if (useField()) {
-      doc.addField("long", skewed(random().nextLong(), 
-                                  TestUtil.nextInt(random(), 5000, 5100)));
+      doc.addField("long", skewed(random().nextLong(), TestUtil.nextInt(random(), 5000, 5100)));
     }
     if (useField()) {
-      doc.addField("float", skewed(random().nextFloat() * random().nextInt(), 
-                                   1.0F / random().nextInt(23)));
+      doc.addField(
+          "float", skewed(random().nextFloat() * random().nextInt(), 1.0F / random().nextInt(23)));
     }
     if (useField()) {
-      doc.addField("double", skewed(random().nextDouble() * random().nextInt(), 
-                                    1.0D / random().nextInt(37)));
+      doc.addField(
+          "double",
+          skewed(random().nextDouble() * random().nextInt(), 1.0D / random().nextInt(37)));
     }
     if (useField()) {
-      doc.addField("str", skewed(randomXmlUsableUnicodeString(),
-                                 TestUtil.randomSimpleString(random(), 1, 1)));
+      doc.addField(
+          "str",
+          skewed(randomXmlUsableUnicodeString(), TestUtil.randomSimpleString(random(), 1, 1)));
     }
     if (useField()) {
       int numBytes = (int) skewed(TestUtil.nextInt(random(), 20, 50), 2);
@@ -1085,8 +1226,11 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       doc.addField("uuid", UUID.randomUUID().toString());
     }
     if (useField()) {
-      doc.addField("currency", skewed("" + (random().nextInt() / 100.) + "," + randomCurrency(),
-                                      "" + TestUtil.nextInt(random(), 250, 320) + ",USD"));
+      doc.addField(
+          "currency",
+          skewed(
+              "" + (random().nextInt() / 100.) + "," + randomCurrency(),
+              "" + TestUtil.nextInt(random(), 250, 320) + ",USD"));
     }
     if (useField()) {
       doc.addField("bool", random().nextBoolean() ? "t" : "f");
@@ -1098,12 +1242,12 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
   }
 
   /**
-   * Generates a random query using the fields populated by 
-   * {@link #buildRandomDocument}.  Queries will typically be fairly simple, but 
-   * won't be so trivial that the scores are completely constant.
+   * Generates a random query using the fields populated by {@link #buildRandomDocument}. Queries
+   * will typically be fairly simple, but won't be so trivial that the scores are completely
+   * constant.
    */
   public static String buildRandomQuery() {
-    List<String> numericFields = Arrays.asList("int","long","float","double");
+    List<String> numericFields = Arrays.asList("int", "long", "float", "double");
     Collections.shuffle(numericFields, random());
     if (random().nextBoolean()) {
       // simple function query across one field.
@@ -1112,14 +1256,20 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       // several SHOULD clauses on range queries
       int low = TestUtil.nextInt(random(), -2379, 2);
       int high = TestUtil.nextInt(random(), 4, 5713);
-      return 
-        numericFields.get(0) + ":[* TO 0] " +
-        numericFields.get(1) + ":[0 TO *] " +
-        numericFields.get(2) + ":[" + low + " TO " + high + "]";
+      return numericFields.get(0)
+          + ":[* TO 0] "
+          + numericFields.get(1)
+          + ":[0 TO *] "
+          + numericFields.get(2)
+          + ":["
+          + low
+          + " TO "
+          + high
+          + "]";
     }
   }
 
-  private static final String[] currencies = { "USD", "EUR", "NOK" };
+  private static final String[] currencies = {"USD", "EUR", "NOK"};
 
   public static String randomCurrency() {
     return currencies[random().nextInt(currencies.length)];
@@ -1130,8 +1280,8 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
   }
 
   /**
-   * Given a list of fieldNames, builds up a random sort string which is guaranteed to
-   * have at least 3 clauses, ending with the "id" field for tie breaking
+   * Given a list of fieldNames, builds up a random sort string which is guaranteed to have at least
+   * 3 clauses, ending with the "id" field for tie breaking
    */
   public static String buildRandomSort(final Collection<String> fieldNames) {
 
@@ -1146,11 +1296,13 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
       String field = shuffledNames.get(i);
 
       // wrap in a function sometimes
-      if ( ! "score".equals(field) && 0 == TestUtil.nextInt(random(), 0, 7)) {
+      if (!"score".equals(field) && 0 == TestUtil.nextInt(random(), 0, 7)) {
         // specific function doesn't matter, just proving that we can handle the concept.
         // but we do have to be careful with non numeric fields
-        if (field.contains("float") || field.contains("double")
-            || field.contains("int") || field.contains("long")) {
+        if (field.contains("float")
+            || field.contains("double")
+            || field.contains("int")
+            || field.contains("long")) {
           field = "abs(" + field + ")";
         } else {
           field = "if(exists(" + field + "),47,83)";
@@ -1162,9 +1314,7 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     return result.toString();
   }
 
-  /** 
-   * Given a set of id, picks some, semi-randomly, to use for elevation
-   */
+  /** Given a set of id, picks some, semi-randomly, to use for elevation */
   public static int[] pickElevations(final int numToElevate, final SentinelIntSet ids) {
     assert numToElevate < ids.size();
     final int[] results = new int[numToElevate];
@@ -1188,5 +1338,4 @@ public class CursorPagingTest extends SolrTestCaseJ4 {
     }
     return results;
   }
-  
 }
diff --git a/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
index dbd4c64..3c16be1 100644
--- a/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/DisMaxRequestHandlerTest.java
@@ -16,54 +16,90 @@
  */
 package org.apache.solr;
 
+import java.util.regex.Pattern;
 import org.apache.solr.common.params.CommonParams;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.regex.Pattern;
-
-/**
- * Tests some basic functionality of the DisMaxRequestHandler
- */
+/** Tests some basic functionality of the DisMaxRequestHandler */
 public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig.xml","schema.xml");
-    lrf = h.getRequestFactory
-      ("/dismax", 0, 20,
-       CommonParams.VERSION,"2.2",
-       "facet", "true",
-       "facet.field","t_s"
-       );
-  /** Add some documents to the index */ 
-    assertNull(h.validateUpdate(adoc("id", "666",
-                 "features_t", "cool and scary stuff",
-                 "subject", "traveling in hell",
-                 "t_s", "movie",
-                 "title", "The Omen",
-                 "weight", "87.9",
-                 "iind", "666")));
-    assertNull(h.validateUpdate(adoc("id", "42",
-                 "features_t", "cool stuff",
-                 "subject", "traveling the galaxy",
-                 "t_s", "movie", "t_s", "book",
-                 "title", "Hitch Hiker's Guide to the Galaxy",
-                 "weight", "99.45",
-                 "iind", "42")));
-    assertNull(h.validateUpdate(adoc("id", "1",
-                 "features_t", "nothing",
-                 "subject", "garbage",
-                 "t_s", "book",
-                 "title", "Most Boring Guide Ever",
-                 "weight", "77",
-                 "iind", "4")));
-    assertNull(h.validateUpdate(adoc("id", "8675309",
-                 "features_t", "Wikedly memorable chorus and stuff",
-                 "subject", "One Cool Hot Chick",
-                 "t_s", "song",
-                 "title", "Jenny",
-                 "weight", "97.3",
-                 "iind", "8675309")));
+    initCore("solrconfig.xml", "schema.xml");
+    lrf =
+        h.getRequestFactory(
+            "/dismax", 0, 20, CommonParams.VERSION, "2.2", "facet", "true", "facet.field", "t_s");
+    /** Add some documents to the index */
+    assertNull(
+        h.validateUpdate(
+            adoc(
+                "id",
+                "666",
+                "features_t",
+                "cool and scary stuff",
+                "subject",
+                "traveling in hell",
+                "t_s",
+                "movie",
+                "title",
+                "The Omen",
+                "weight",
+                "87.9",
+                "iind",
+                "666")));
+    assertNull(
+        h.validateUpdate(
+            adoc(
+                "id",
+                "42",
+                "features_t",
+                "cool stuff",
+                "subject",
+                "traveling the galaxy",
+                "t_s",
+                "movie",
+                "t_s",
+                "book",
+                "title",
+                "Hitch Hiker's Guide to the Galaxy",
+                "weight",
+                "99.45",
+                "iind",
+                "42")));
+    assertNull(
+        h.validateUpdate(
+            adoc(
+                "id",
+                "1",
+                "features_t",
+                "nothing",
+                "subject",
+                "garbage",
+                "t_s",
+                "book",
+                "title",
+                "Most Boring Guide Ever",
+                "weight",
+                "77",
+                "iind",
+                "4")));
+    assertNull(
+        h.validateUpdate(
+            adoc(
+                "id",
+                "8675309",
+                "features_t",
+                "Wikedly memorable chorus and stuff",
+                "subject",
+                "One Cool Hot Chick",
+                "t_s",
+                "song",
+                "title",
+                "Jenny",
+                "weight",
+                "97.3",
+                "iind",
+                "8675309")));
     assertNull(h.validateUpdate(commit()));
   }
 
@@ -71,124 +107,130 @@ public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
   public void testSomeStuff() throws Exception {
     doTestSomeStuff("/dismax");
   }
+
   public void doTestSomeStuff(final String qt) throws Exception {
 
-    assertQ("basic match",
-            req("guide")
-            ,"//*[@numFound='2']"
-            ,"//lst[@name='facet_fields']/lst[@name='t_s']"
-            ,"*[count(//lst[@name='t_s']/int)=3]"
-            ,"//lst[@name='t_s']/int[@name='book'][.='2']"
-            ,"//lst[@name='t_s']/int[@name='movie'][.='1']"
-            );
-    
-    assertQ("basic cross field matching, boost on same field matching",
-            req("cool stuff")
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='42']"
-            ,"//result/doc[2]/str[@name='id'][.='8675309']"
-            ,"//result/doc[3]/str[@name='id'][.='666']"
-            );
-
-    assertQ("multi qf",
-            req("q", "cool"
-                ,"qt", qt
-                ,CommonParams.VERSION, "2.2"
-                ,"qf", "subject"
-                ,"qf", "features_t"
-                )
-            ,"//*[@numFound='3']"
-            );
-    
-    assertQ("multi qf as local params",
-            req("q", "{!dismax qf=subject qf=features_t}cool")
-            ,"//*[@numFound='3']"
-            );
-
-    assertQ("boost query",
-            req("q", "cool stuff"
-                ,"qt", qt
-                ,CommonParams.VERSION, "2.2"
-                ,"bq", "subject:hell^400"
-                )
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='666']"
-            ,"//result/doc[2]/str[@name='id'][.='42']"
-            ,"//result/doc[3]/str[@name='id'][.='8675309']"
-            );
-
-    assertQ("multi boost query",
-            req("q", "cool stuff"
-                ,"qt", qt
-                ,CommonParams.VERSION, "2.2"
-                ,"bq", "subject:hell^400"
-                ,"bq", "subject:cool^4"
-                , CommonParams.DEBUG_QUERY, "true"
-                )
-            ,"//*[@numFound='3']"
-            ,"//result/doc[1]/str[@name='id'][.='666']"
-            ,"//result/doc[2]/str[@name='id'][.='8675309']"
-            ,"//result/doc[3]/str[@name='id'][.='42']"
-            );
-    
-    assertQ("minimum mm is three",
-            req("cool stuff traveling")
-            ,"//*[@numFound='2']"
-            ,"//result/doc[1]/str[@name='id'][. ='42']"
-            ,"//result/doc[2]/str[@name='id'][. ='666']"
-            );
-    
-    assertQ("at 4 mm allows one missing ",
-            req("cool stuff traveling jenny")
-            ,"//*[@numFound='3']"
-            );
-
-    assertQ("relying on ALTQ from config",
-            req( "qt", qt,
-                 "fq", "id:666",
-                 "facet", "false" )
-            ,"//*[@numFound='1']"
-            );
-    
-    assertQ("explicit ALTQ",
-            req( "qt", qt,
-                 "q.alt", "id:9999",
-                 "fq", "id:666",
-                 "facet", "false" )
-            ,"//*[@numFound='0']"
-            );
-
-    assertQ("no query slop == no match",
-            req( "qt", qt,
-                 "q", "\"cool chick\"" )
-            ,"//*[@numFound='0']"
-            );
-    assertQ("query slop == match",
-            req( "qt", qt,
-                 "qs", "2",
-                 "q", "\"cool chick\"" )
-            ,"//*[@numFound='1']"
-            );
+    assertQ(
+        "basic match",
+        req("guide"),
+        "//*[@numFound='2']",
+        "//lst[@name='facet_fields']/lst[@name='t_s']",
+        "*[count(//lst[@name='t_s']/int)=3]",
+        "//lst[@name='t_s']/int[@name='book'][.='2']",
+        "//lst[@name='t_s']/int[@name='movie'][.='1']");
+
+    assertQ(
+        "basic cross field matching, boost on same field matching",
+        req("cool stuff"),
+        "//*[@numFound='3']",
+        "//result/doc[1]/str[@name='id'][.='42']",
+        "//result/doc[2]/str[@name='id'][.='8675309']",
+        "//result/doc[3]/str[@name='id'][.='666']");
+
+    assertQ(
+        "multi qf",
+        req(
+            "q",
+            "cool",
+            "qt",
+            qt,
+            CommonParams.VERSION,
+            "2.2",
+            "qf",
+            "subject",
+            "qf",
+            "features_t"),
+        "//*[@numFound='3']");
+
+    assertQ(
+        "multi qf as local params",
+        req("q", "{!dismax qf=subject qf=features_t}cool"),
+        "//*[@numFound='3']");
 
+    assertQ(
+        "boost query",
+        req("q", "cool stuff", "qt", qt, CommonParams.VERSION, "2.2", "bq", "subject:hell^400"),
+        "//*[@numFound='3']",
+        "//result/doc[1]/str[@name='id'][.='666']",
+        "//result/doc[2]/str[@name='id'][.='42']",
+        "//result/doc[3]/str[@name='id'][.='8675309']");
+
+    assertQ(
+        "multi boost query",
+        req(
+            "q",
+            "cool stuff",
+            "qt",
+            qt,
+            CommonParams.VERSION,
+            "2.2",
+            "bq",
+            "subject:hell^400",
+            "bq",
+            "subject:cool^4",
+            CommonParams.DEBUG_QUERY,
+            "true"),
+        "//*[@numFound='3']",
+        "//result/doc[1]/str[@name='id'][.='666']",
+        "//result/doc[2]/str[@name='id'][.='8675309']",
+        "//result/doc[3]/str[@name='id'][.='42']");
+
+    assertQ(
+        "minimum mm is three",
+        req("cool stuff traveling"),
+        "//*[@numFound='2']",
+        "//result/doc[1]/str[@name='id'][. ='42']",
+        "//result/doc[2]/str[@name='id'][. ='666']");
+
+    assertQ("at 4 mm allows one missing ", req("cool stuff traveling jenny"), "//*[@numFound='3']");
+
+    assertQ(
+        "relying on ALTQ from config",
+        req(
+            "qt", qt,
+            "fq", "id:666",
+            "facet", "false"),
+        "//*[@numFound='1']");
+
+    assertQ(
+        "explicit ALTQ",
+        req(
+            "qt", qt,
+            "q.alt", "id:9999",
+            "fq", "id:666",
+            "facet", "false"),
+        "//*[@numFound='0']");
+
+    assertQ(
+        "no query slop == no match", req("qt", qt, "q", "\"cool chick\""), "//*[@numFound='0']");
+    assertQ(
+        "query slop == match",
+        req(
+            "qt", qt,
+            "qs", "2",
+            "q", "\"cool chick\""),
+        "//*[@numFound='1']");
   }
 
   @Test
   public void testSubQueriesNotSupported() {
     // See org.apache.solr.search.TestSolrQueryParser.testNestedQueryModifiers()
-    assertQ("don't parse subqueries",
-        req("defType", "dismax",
+    assertQ(
+        "don't parse subqueries",
+        req(
+            "defType", "dismax",
             "df", "doesnotexist_s",
             "q", "_query_:\"{!v=$qq}\"",
-            "qq", "features_t:cool")
-        ,"//*[@numFound='0']"
-    );
-    assertQ("don't parse subqueries",
-        req("defType", "dismax",
+            "qq", "features_t:cool"),
+        "//*[@numFound='0']");
+    assertQ(
+        "don't parse subqueries",
+        req(
+            "defType", "dismax",
             "df", "doesnotexist_s",
             "q", "{!v=$qq}",
-            "qq", "features_t:cool")
-        ,"//*[@numFound='0']"
-    );
+            "qq", "features_t:cool"),
+        "//*[@numFound='0']");
   }
 
   @Test
@@ -198,25 +240,38 @@ public class DisMaxRequestHandlerTest extends SolrTestCaseJ4 {
     // surrounded by ()'s in the debug output
     Pattern p = Pattern.compile("subject:hell\\s*subject:cool");
     Pattern p_bool = Pattern.compile("\\(subject:hell\\s*subject:cool\\)");
-    String resp = h.query(req("q", "cool stuff"
-                ,"qt", "/dismax"
-                ,CommonParams.VERSION, "2.2"
-                ,"bq", "subject:hell OR subject:cool"
-                ,CommonParams.DEBUG_QUERY, "true"
-                              ));
+    String resp =
+        h.query(
+            req(
+                "q",
+                "cool stuff",
+                "qt",
+                "/dismax",
+                CommonParams.VERSION,
+                "2.2",
+                "bq",
+                "subject:hell OR subject:cool",
+                CommonParams.DEBUG_QUERY,
+                "true"));
     assertTrue(p.matcher(resp).find());
     assertFalse(p_bool.matcher(resp).find());
 
-    resp = h.query(req("q", "cool stuff"
-                ,"qt", "/dismax"
-                ,CommonParams.VERSION, "2.2"
-                ,"bq", "subject:hell OR subject:cool"
-                ,"bq",""
-                ,CommonParams.DEBUG_QUERY, "true"
-                              ));    
+    resp =
+        h.query(
+            req(
+                "q",
+                "cool stuff",
+                "qt",
+                "/dismax",
+                CommonParams.VERSION,
+                "2.2",
+                "bq",
+                "subject:hell OR subject:cool",
+                "bq",
+                "",
+                CommonParams.DEBUG_QUERY,
+                "true"));
     assertTrue(p.matcher(resp).find());
     assertTrue(p_bool.matcher(resp).find());
-
   }
-  
 }
diff --git a/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java b/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
index 7cbd372..ff52ff0 100644
--- a/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
+++ b/solr/core/src/test/org/apache/solr/DistributedIntervalFacetingTest.java
@@ -18,7 +18,6 @@ package org.apache.solr;
 
 import java.util.Arrays;
 import java.util.List;
-
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
 import org.apache.solr.client.solrj.SolrQuery;
@@ -29,10 +28,10 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 @Slow
-@SuppressSSL(bugUrl="https://issues.apache.org/jira/browse/SOLR-9182 - causes OOM")
-// See: https://issues.apache.org/jira/browse/SOLR-12028 Tests cannot remove files on Windows machines occasionally
-public class DistributedIntervalFacetingTest extends
-    BaseDistributedSearchTestCase {
+@SuppressSSL(bugUrl = "https://issues.apache.org/jira/browse/SOLR-9182 - causes OOM")
+// See: https://issues.apache.org/jira/browse/SOLR-12028 Tests cannot remove files on Windows
+// machines occasionally
+public class DistributedIntervalFacetingTest extends BaseDistributedSearchTestCase {
 
   @BeforeClass
   public static void beforeSuperClass() throws Exception {
@@ -56,12 +55,12 @@ public class DistributedIntervalFacetingTest extends
     indexr("id", "2", "test_i_dv", "2", "test_s_dv", "AAA");
     indexr("id", "3", "test_i_dv", "3", "test_s_dv", "CCC");
     commit();
-    
+
     QueryResponse response = controlClient.query(new SolrQuery("*:*"));
     assertEquals(4, response.getResults().getNumFound());
-    
+
     SolrQuery q = new SolrQuery("*:*");
-    String[] intervals =  new String[]{"[0,1)","[1,2)", "[2,3)", "[3,*)"};
+    String[] intervals = new String[] {"[0,1)", "[1,2)", "[2,3)", "[3,*)"};
     q.addIntervalFacets("test_i_dv", intervals);
     response = controlClient.query(q);
     assertEquals(1, response.getIntervalFacets().size());
@@ -72,32 +71,38 @@ public class DistributedIntervalFacetingTest extends
       assertEquals(intervals[i], count.getKey());
       assertEquals(1, count.getCount());
     }
-    
+
     q = new SolrQuery("*:*");
     q.addIntervalFacets("test_i_dv", intervals);
-    q.addIntervalFacets("test_s_dv", new String[]{"{!key='AAA'}[AAA,AAA]", "{!key='BBB'}[BBB,BBB]", "{!key='CCC'}[CCC,CCC]"});
+    q.addIntervalFacets(
+        "test_s_dv",
+        new String[] {"{!key='AAA'}[AAA,AAA]", "{!key='BBB'}[BBB,BBB]", "{!key='CCC'}[CCC,CCC]"});
     response = controlClient.query(q);
     assertEquals(2, response.getIntervalFacets().size());
-    
-    int stringIntervalIndex = "test_s_dv".equals(response.getIntervalFacets().get(0).getField())?0:1;
-        
-    assertEquals("test_i_dv", response.getIntervalFacets().get(1-stringIntervalIndex).getField());
+
+    int stringIntervalIndex =
+        "test_s_dv".equals(response.getIntervalFacets().get(0).getField()) ? 0 : 1;
+
+    assertEquals("test_i_dv", response.getIntervalFacets().get(1 - stringIntervalIndex).getField());
     assertEquals("test_s_dv", response.getIntervalFacets().get(stringIntervalIndex).getField());
-    
-    for (int i = 0; i < response.getIntervalFacets().get(1-stringIntervalIndex).getIntervals().size(); i++) {
-      Count count = response.getIntervalFacets().get(1-stringIntervalIndex).getIntervals().get(i);
+
+    for (int i = 0;
+        i < response.getIntervalFacets().get(1 - stringIntervalIndex).getIntervals().size();
+        i++) {
+      Count count = response.getIntervalFacets().get(1 - stringIntervalIndex).getIntervals().get(i);
       assertEquals(intervals[i], count.getKey());
       assertEquals(1, count.getCount());
     }
-    
-    List<Count> stringIntervals = response.getIntervalFacets().get(stringIntervalIndex).getIntervals();
+
+    List<Count> stringIntervals =
+        response.getIntervalFacets().get(stringIntervalIndex).getIntervals();
     assertEquals(3, stringIntervals.size());
     assertEquals("AAA", stringIntervals.get(0).getKey());
     assertEquals(2, stringIntervals.get(0).getCount());
-    
+
     assertEquals("BBB", stringIntervals.get(1).getKey());
     assertEquals(1, stringIntervals.get(1).getCount());
-    
+
     assertEquals("CCC", stringIntervals.get(2).getKey());
     assertEquals(1, stringIntervals.get(2).getCount());
   }
@@ -106,17 +111,28 @@ public class DistributedIntervalFacetingTest extends
     // All field values will be a number between 0 and cardinality
     int cardinality = 1000000;
     // Fields to use for interval faceting
-    String[] fields = new String[]{"test_s_dv", "test_i_dv", "test_l_dv", "test_f_dv", "test_d_dv",
-        "test_ss_dv", "test_is_dv", "test_fs_dv", "test_ls_dv", "test_ds_dv"};
+    String[] fields =
+        new String[] {
+          "test_s_dv",
+          "test_i_dv",
+          "test_l_dv",
+          "test_f_dv",
+          "test_d_dv",
+          "test_ss_dv",
+          "test_is_dv",
+          "test_fs_dv",
+          "test_ls_dv",
+          "test_ds_dv"
+        };
     for (int i = 0; i < atLeast(500); i++) {
       if (random().nextInt(50) == 0) {
-        //have some empty docs
+        // have some empty docs
         indexr("id", String.valueOf(i));
         continue;
       }
 
       if (random().nextInt(100) == 0 && i > 0) {
-        //delete some docs
+        // delete some docs
         del("id:" + String.valueOf(i - 1));
       }
       Object[] docFields = new Object[(random().nextInt(5)) * 10 + 12];
@@ -156,30 +172,28 @@ public class DistributedIntervalFacetingTest extends
     handle.put("timestamp", SKIPVAL);
     handle.put("maxScore", SKIPVAL);
 
-
     for (int i = 0; i < atLeast(100); i++) {
       doTestQuery(cardinality, fields);
     }
-
   }
 
   /**
-   * Executes one query using interval faceting and compares with the same query using
-   * facet query with the same range
+   * Executes one query using interval faceting and compares with the same query using facet query
+   * with the same range
    */
   private void doTestQuery(int cardinality, String[] fields) throws Exception {
-    String[] startOptions = new String[]{"(", "["};
-    String[] endOptions = new String[]{")", "]"};
+    String[] startOptions = new String[] {"(", "["};
+    String[] endOptions = new String[] {")", "]"};
     // the query should match some documents in most cases
     Integer[] qRange = getRandomRange(cardinality, "id");
     ModifiableSolrParams params = new ModifiableSolrParams();
     params.set("q", "id:[" + qRange[0] + " TO " + qRange[1] + "]");
     params.set("facet", "true");
     params.set("rows", "0");
-    String field = fields[random().nextInt(fields.length)]; //choose from any of the fields
+    String field = fields[random().nextInt(fields.length)]; // choose from any of the fields
     if (random().nextBoolean()) {
       params.set("facet.interval", field);
-    } else  {
+    } else {
       params.set("facet.interval", getFieldWithKey(field));
     }
     // number of intervals
@@ -187,10 +201,10 @@ public class DistributedIntervalFacetingTest extends
       Integer[] interval = getRandomRange(cardinality, field);
       String open = startOptions[interval[0] % 2];
       String close = endOptions[interval[1] % 2];
-      params.add("f." + field + ".facet.interval.set", open + interval[0] + "," + interval[1] + close);
+      params.add(
+          "f." + field + ".facet.interval.set", open + interval[0] + "," + interval[1] + close);
     }
     query(params);
-
   }
 
   private String getFieldWithKey(String field) {
@@ -198,11 +212,9 @@ public class DistributedIntervalFacetingTest extends
   }
 
   /**
-   * Returns a random range. It's guaranteed that the first
-   * number will be lower than the second, and both of them
-   * between 0 (inclusive) and <code>max</code> (exclusive).
-   * If the fieldName is "test_s_dv" or "test_ss_dv" (the
-   * two fields used for Strings), the comparison will be done
+   * Returns a random range. It's guaranteed that the first number will be lower than the second,
+   * and both of them between 0 (inclusive) and <code>max</code> (exclusive). If the fieldName is
+   * "test_s_dv" or "test_ss_dv" (the two fields used for Strings), the comparison will be done
    * alphabetically
    */
   private Integer[] getRandomRange(int max, String fieldName) {
diff --git a/solr/core/src/test/org/apache/solr/EchoParamsTest.java b/solr/core/src/test/org/apache/solr/EchoParamsTest.java
index 44699e8..1ed909d 100644
--- a/solr/core/src/test/org/apache/solr/EchoParamsTest.java
+++ b/solr/core/src/test/org/apache/solr/EchoParamsTest.java
@@ -21,16 +21,15 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 
 /** Test SOLR-59, echo of query parameters */
-
 public class EchoParamsTest extends SolrTestCaseJ4 {
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solr/crazy-path-to-config.xml","solr/crazy-path-to-schema.xml");
+    initCore("solr/crazy-path-to-config.xml", "solr/crazy-path-to-schema.xml");
   }
 
   private static final String HEADER_XPATH = "/response/lst[@name='responseHeader']";
-  
+
   @Test
   public void test() {
     defaultEchoParams();
@@ -39,42 +38,51 @@ public class EchoParamsTest extends SolrTestCaseJ4 {
     allEchoParams();
   }
 
-  // the following test methods rely on their order, which is no longer guaranteed by Java 7, so call them directly above:
-  
+  // the following test methods rely on their order, which is no longer guaranteed by Java 7, so
+  // call them directly above:
+
   private void defaultEchoParams() {
     lrf.args.put("wt", "xml");
-    lrf.args.put(CommonParams.VERSION, "2.2");    
-    assertQ(req("foo"),HEADER_XPATH + "/int[@name='status']");
-    assertQ(req("foo"),"not(//lst[@name='params'])");
+    lrf.args.put(CommonParams.VERSION, "2.2");
+    assertQ(req("foo"), HEADER_XPATH + "/int[@name='status']");
+    assertQ(req("foo"), "not(//lst[@name='params'])");
   }
 
   private void defaultEchoParamsDefaultVersion() {
     lrf.args.put("wt", "xml");
-    lrf.args.remove(CommonParams.VERSION);    
-    assertQ(req("foo"),HEADER_XPATH + "/int[@name='status']");
-    assertQ(req("foo"),"not(//lst[@name='params'])");
+    lrf.args.remove(CommonParams.VERSION);
+    assertQ(req("foo"), HEADER_XPATH + "/int[@name='status']");
+    assertQ(req("foo"), "not(//lst[@name='params'])");
   }
 
   private void explicitEchoParams() {
     lrf.args.put("wt", "xml");
     lrf.args.put(CommonParams.VERSION, "2.2");
     lrf.args.put("echoParams", "explicit");
-    assertQ(req("foo"),HEADER_XPATH + "/int[@name='status']");
-    assertQ(req("foo"),HEADER_XPATH + "/lst[@name='params']");
-    assertQ(req("foo"),HEADER_XPATH + "/lst[@name='params']/str[@name='wt'][.='xml']");
+    assertQ(req("foo"), HEADER_XPATH + "/int[@name='status']");
+    assertQ(req("foo"), HEADER_XPATH + "/lst[@name='params']");
+    assertQ(req("foo"), HEADER_XPATH + "/lst[@name='params']/str[@name='wt'][.='xml']");
   }
 
   private void allEchoParams() {
-    lrf = h.getRequestFactory
-      ("/crazy_custom_qt", 0, 20,
-       CommonParams.VERSION,"2.2",
-       "wt","xml",
-       "echoParams", "all",
-       "echoHandler","true"
-       );
+    lrf =
+        h.getRequestFactory(
+            "/crazy_custom_qt",
+            0,
+            20,
+            CommonParams.VERSION,
+            "2.2",
+            "wt",
+            "xml",
+            "echoParams",
+            "all",
+            "echoHandler",
+            "true");
 
-    assertQ(req("foo"),HEADER_XPATH + "/lst[@name='params']/str[@name='fl'][.='implicit']");
-    assertQ(req("foo"),HEADER_XPATH + "/str[@name='handler'][.='org.apache.solr.handler.component.SearchHandler']");
+    assertQ(req("foo"), HEADER_XPATH + "/lst[@name='params']/str[@name='fl'][.='implicit']");
+    assertQ(
+        req("foo"),
+        HEADER_XPATH
+            + "/str[@name='handler'][.='org.apache.solr.handler.component.SearchHandler']");
   }
-
 }
diff --git a/solr/core/src/test/org/apache/solr/HelloWorldSolrCloudTestCase.java b/solr/core/src/test/org/apache/solr/HelloWorldSolrCloudTestCase.java
index 0f4bf04..270ab6c 100644
--- a/solr/core/src/test/org/apache/solr/HelloWorldSolrCloudTestCase.java
+++ b/solr/core/src/test/org/apache/solr/HelloWorldSolrCloudTestCase.java
@@ -23,25 +23,21 @@ import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.cloud.SolrCloudTestCase;
 import org.apache.solr.common.SolrInputDocument;
-
 import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
- * How to use this test class:
- * #1 Run the test, e.g.
- *    in Eclipse 'Run As JUnit Test' or
- *    on the command line:  ./gradlew -p solr/core test --tests HelloWorldSolrCloudTestCase
- * #2 Modify the test, e.g.
- *    in setupCluster add further documents and then re-run the test.
+ * How to use this test class: #1 Run the test, e.g. in Eclipse 'Run As JUnit Test' or on the
+ * command line: ./gradlew -p solr/core test --tests HelloWorldSolrCloudTestCase #2 Modify the test,
+ * e.g. in setupCluster add further documents and then re-run the test.
  */
 public class HelloWorldSolrCloudTestCase extends SolrCloudTestCase {
 
-  private static final String COLLECTION = "hello_world" ;
+  private static final String COLLECTION = "hello_world";
 
   private static final int numShards = 3;
   private static final int numReplicas = 2;
-  private static final int nodeCount = numShards*numReplicas;
+  private static final int nodeCount = numShards * numReplicas;
 
   private static final String id = "id";
 
@@ -49,22 +45,24 @@ public class HelloWorldSolrCloudTestCase extends SolrCloudTestCase {
   public static void setupCluster() throws Exception {
 
     // create and configure cluster
-    configureCluster(nodeCount)
-        .addConfig("conf", configset("cloud-dynamic"))
-        .configure();
+    configureCluster(nodeCount).addConfig("conf", configset("cloud-dynamic")).configure();
 
     // create an empty collection
     CollectionAdminRequest.createCollection(COLLECTION, "conf", numShards, numReplicas)
         .process(cluster.getSolrClient());
 
     // add a document
-    final SolrInputDocument doc1 = sdoc(id, "1",
-        "title_s", "Here comes the sun",
-        "artist_s", "The Beatles",
-        "popularity_i", "123");
-    new UpdateRequest()
-        .add(doc1)
-        .commit(cluster.getSolrClient(), COLLECTION);
+    final SolrInputDocument doc1 =
+        sdoc(
+            id,
+            "1",
+            "title_s",
+            "Here comes the sun",
+            "artist_s",
+            "The Beatles",
+            "popularity_i",
+            "123");
+    new UpdateRequest().add(doc1).commit(cluster.getSolrClient(), COLLECTION);
 
     // add further document(s) here
     // TODO
@@ -72,7 +70,9 @@ public class HelloWorldSolrCloudTestCase extends SolrCloudTestCase {
 
   @Test
   public void testHighestScoring() throws Exception {
-    final SolrQuery solrQuery = new SolrQuery("q", "*:*", "fl", "id,popularity_i", "sort", "popularity_i desc", "rows", "1");
+    final SolrQuery solrQuery =
+        new SolrQuery(
+            "q", "*:*", "fl", "id,popularity_i", "sort", "popularity_i desc", "rows", "1");
     final CloudSolrClient cloudSolrClient = cluster.getSolrClient();
     final QueryResponse rsp = cloudSolrClient.query(COLLECTION, solrQuery);
     assertEquals(1, rsp.getResults().size());
@@ -81,12 +81,11 @@ public class HelloWorldSolrCloudTestCase extends SolrCloudTestCase {
 
   @Test
   public void testLowestScoring() throws Exception {
-    final SolrQuery solrQuery = new SolrQuery("q", "*:*", "fl", "id,popularity_i", "sort", "popularity_i asc", "rows", "1");
+    final SolrQuery solrQuery =
+        new SolrQuery("q", "*:*", "fl", "id,popularity_i", "sort", "popularity_i asc", "rows", "1");
     final CloudSolrClient cloudSolrClient = cluster.getSolrClient();
     final QueryResponse rsp = cloudSolrClient.query(COLLECTION, solrQuery);
     assertEquals(1, rsp.getResults().size());
     assertEquals("1", rsp.getResults().get(0).getFieldValue(id));
   }
-
 }
-
diff --git a/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java b/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
index 8e0f8db..a0bbd49 100644
--- a/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
+++ b/solr/core/src/test/org/apache/solr/MinimalSchemaTest.java
@@ -16,87 +16,78 @@
  */
 package org.apache.solr;
 
+import java.util.Set;
 import org.apache.solr.common.params.CommonParams;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.Set;
-
-/**
- * A test of basic features using the minial legal solr schema.
- */
+/** A test of basic features using the minial legal solr schema. */
 public class MinimalSchemaTest extends SolrTestCaseJ4 {
   /**
-   * NOTE: we explicitly use the general 'solrconfig.xml' file here, in 
-   * an attempt to test as many broad features as possible.
+   * NOTE: we explicitly use the general 'solrconfig.xml' file here, in an attempt to test as many
+   * broad features as possible.
    *
-   * Do not change this to point at some other "simpler" solrconfig.xml 
-   * just because you want to add a new test case using solrconfig.xml, 
-   * but your new testcase adds a feature that breaks this test.
+   * <p>Do not change this to point at some other "simpler" solrconfig.xml just because you want to
+   * add a new test case using solrconfig.xml, but your new testcase adds a feature that breaks this
+   * test.
    */
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solr/collection1/conf/solrconfig.xml","solr/collection1/conf/schema-minimal.xml");
+    initCore("solr/collection1/conf/solrconfig.xml", "solr/collection1/conf/schema-minimal.xml");
 
-    /* make sure some misguided soul doesn't inadvertently give us 
+    /* make sure some misguided soul doesn't inadvertently give us
        a uniqueKey field and defeat the point of the tests
     */
-    assertNull("UniqueKey Field isn't null", 
-               h.getCore().getLatestSchema().getUniqueKeyField());
-
-    lrf.args.put(CommonParams.VERSION,"2.2");
-
-    assertNull("Simple assertion that adding a document works", h.validateUpdate(
-            adoc("id",  "4055",
-                 "subject", "Hoss",
-                 "project", "Solr")));
-    assertNull(h.validateUpdate(adoc("id",  "4056",
-                 "subject", "Yonik",
-                 "project", "Solr")));
+    assertNull("UniqueKey Field isn't null", h.getCore().getLatestSchema().getUniqueKeyField());
+
+    lrf.args.put(CommonParams.VERSION, "2.2");
+
+    assertNull(
+        "Simple assertion that adding a document works",
+        h.validateUpdate(
+            adoc(
+                "id", "4055",
+                "subject", "Hoss",
+                "project", "Solr")));
+    assertNull(h.validateUpdate(adoc("id", "4056", "subject", "Yonik", "project", "Solr")));
     assertNull(h.validateUpdate(commit()));
     assertNull(h.validateUpdate(optimize()));
-
   }
 
   @Test
   public void testSimpleQueries() {
 
-    assertQ("couldn't find subject hoss",
-            req("subject:Hoss")
-            ,"//result[@numFound=1]"
-            ,"//str[@name='id'][.='4055']"
-            );
-
-    assertQ("couldn't find subject Yonik",
-            req("subject:Yonik")
-            ,"//result[@numFound=1]"
-            ,"//str[@name='id'][.='4056']"
-            );
+    assertQ(
+        "couldn't find subject hoss",
+        req("subject:Hoss"),
+        "//result[@numFound=1]",
+        "//str[@name='id'][.='4055']");
+
+    assertQ(
+        "couldn't find subject Yonik",
+        req("subject:Yonik"),
+        "//result[@numFound=1]",
+        "//str[@name='id'][.='4056']");
   }
 
   /** SOLR-1371 */
   @Test
   public void testLuke() {
-    
-    assertQ("basic luke request failed",
-            req("qt", "/admin/luke")
-            ,"//int[@name='numDocs'][.='2']"
-            );
 
-    assertQ("luke show schema failed",
-            req("qt", "/admin/luke",
-                "show","schema")
-            ,"//int[@name='numDocs'][.='2']"
-            ,"//null[@name='uniqueKeyField']"
-            );
+    assertQ("basic luke request failed", req("qt", "/admin/luke"), "//int[@name='numDocs'][.='2']");
 
+    assertQ(
+        "luke show schema failed",
+        req(
+            "qt", "/admin/luke",
+            "show", "schema"),
+        "//int[@name='numDocs'][.='2']",
+        "//null[@name='uniqueKeyField']");
   }
 
-
-  /** 
-   * Iterates over all (non "/update/*") handlers in the core and hits 
-   * them with a request (using some simple params) to verify that they 
-   * don't generate an error against the minimal schema
+  /**
+   * Iterates over all (non "/update/*") handlers in the core and hits them with a request (using
+   * some simple params) to verify that they don't generate an error against the minimal schema
    */
   @Test
   public void testAllConfiguredHandlers() {
@@ -104,39 +95,34 @@ public class MinimalSchemaTest extends SolrTestCaseJ4 {
     for (String handler : handlerNames) {
       try {
 
-
-        if (handler.startsWith("/update") ||
-            handler.startsWith("/admin") ||
-            handler.startsWith("/schema") ||
-            handler.startsWith("/config") ||
-            handler.startsWith("/mlt") ||
-            handler.startsWith("/export") ||
-            handler.startsWith("/graph") ||
-            handler.startsWith("/sql") ||
-            handler.startsWith("/stream") ||
-            handler.startsWith("/terms") ||
-            handler.startsWith("/analysis/")||
-            handler.startsWith("/debug/") ||
-            handler.startsWith("/replication") ||
-            handler.startsWith("/tasks")
-            ) {
+        if (handler.startsWith("/update")
+            || handler.startsWith("/admin")
+            || handler.startsWith("/schema")
+            || handler.startsWith("/config")
+            || handler.startsWith("/mlt")
+            || handler.startsWith("/export")
+            || handler.startsWith("/graph")
+            || handler.startsWith("/sql")
+            || handler.startsWith("/stream")
+            || handler.startsWith("/terms")
+            || handler.startsWith("/analysis/")
+            || handler.startsWith("/debug/")
+            || handler.startsWith("/replication")
+            || handler.startsWith("/tasks")) {
           continue;
         }
 
-        assertQ("failure w/handler: '" + handler + "'",
-                req("qt", handler,
-                    // this should be fairly innocuous for any type of query
-                    "q", "foo:bar",
-                    "omitHeader", "false"
-                )
-                ,"//lst[@name='responseHeader']"
-                );
+        assertQ(
+            "failure w/handler: '" + handler + "'",
+            req(
+                "qt", handler,
+                // this should be fairly innocuous for any type of query
+                "q", "foo:bar",
+                "omitHeader", "false"),
+            "//lst[@name='responseHeader']");
       } catch (Exception e) {
-        throw new RuntimeException("exception w/handler: '" + handler + "'", 
-                                   e);
+        throw new RuntimeException("exception w/handler: '" + handler + "'", e);
       }
     }
   }
 }
-
-
diff --git a/solr/core/src/test/org/apache/solr/OutputWriterTest.java b/solr/core/src/test/org/apache/solr/OutputWriterTest.java
index ff88fe0..6760c84 100644
--- a/solr/core/src/test/org/apache/solr/OutputWriterTest.java
+++ b/solr/core/src/test/org/apache/solr/OutputWriterTest.java
@@ -18,7 +18,6 @@ package org.apache.solr;
 
 import java.io.IOException;
 import java.io.Writer;
-
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.core.PluginBag;
 import org.apache.solr.request.SolrQueryRequest;
@@ -27,77 +26,70 @@ import org.apache.solr.response.SolrQueryResponse;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-/** Tests the ability to configure multiple query output writers, and select those
- * at query time.
- *
- */
+/** Tests the ability to configure multiple query output writers, and select those at query time. */
 public class OutputWriterTest extends SolrTestCaseJ4 {
 
-    /** The XML string that's output for testing purposes. */
-    public static final String USELESS_OUTPUT = "useless output";
-
-    @BeforeClass
-    public static void beforeClass() throws Exception {
-      initCore("solr/crazy-path-to-config.xml","solr/crazy-path-to-schema.xml");
-    }
-
-
-    /**
-     * responseHeader has changed in SOLR-59, check old and new variants,
-     * In SOLR-2413, we removed support for the deprecated versions
-     */
-    @Test
-    public void testSOLR59responseHeaderVersions() {
-        // default version is 2.2, with "new" responseHeader
-        lrf.args.remove(CommonParams.VERSION);
-        lrf.args.put("wt", "standard");
-        assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='status'][.='0']");
-        lrf.args.remove("wt");
-        assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='QTime']");
-
-        // and explicit 2.2 works as default
-        //lrf.args.put("version", "2.2");
-        lrf.args.put("wt", "standard");
-        assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='status'][.='0']");
-        lrf.args.remove("wt");
-        assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='QTime']");
-    }
-
-    @Test
-    public void testUselessWriter() throws Exception {
-        lrf.args.put("wt", "useless");
-        String out = h.query(req("foo"));
-        assertEquals(USELESS_OUTPUT, out);
-    }
-
-    public void testLazy() {
-        PluginBag.PluginHolder<QueryResponseWriter> qrw = h.getCore().getResponseWriters().getRegistry().get("useless");
-        assertTrue("Should be a lazy class", qrw instanceof PluginBag.LazyPluginHolder);
-
-        qrw = h.getCore().getResponseWriters().getRegistry().get("xml");
-        assertTrue("Should not be a lazy class", qrw.isLoaded());
-        assertTrue("Should not be a lazy class", qrw.getClass() == PluginBag.PluginHolder.class);
-
-    }
-
-    ////////////////////////////////////////////////////////////////////////////
-    /** An output writer that doesn't do anything useful. */
-
-    public static class UselessOutputWriter implements QueryResponseWriter {
-
-        public UselessOutputWriter() {}
-
-        @Override
-        public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response)
+  /** The XML string that's output for testing purposes. */
+  public static final String USELESS_OUTPUT = "useless output";
+
+  @BeforeClass
+  public static void beforeClass() throws Exception {
+    initCore("solr/crazy-path-to-config.xml", "solr/crazy-path-to-schema.xml");
+  }
+
+  /**
+   * responseHeader has changed in SOLR-59, check old and new variants, In SOLR-2413, we removed
+   * support for the deprecated versions
+   */
+  @Test
+  public void testSOLR59responseHeaderVersions() {
+    // default version is 2.2, with "new" responseHeader
+    lrf.args.remove(CommonParams.VERSION);
+    lrf.args.put("wt", "standard");
+    assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='status'][.='0']");
+    lrf.args.remove("wt");
+    assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='QTime']");
+
+    // and explicit 2.2 works as default
+    // lrf.args.put("version", "2.2");
+    lrf.args.put("wt", "standard");
+    assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='status'][.='0']");
+    lrf.args.remove("wt");
+    assertQ(req("foo"), "/response/lst[@name='responseHeader']/int[@name='QTime']");
+  }
+
+  @Test
+  public void testUselessWriter() throws Exception {
+    lrf.args.put("wt", "useless");
+    String out = h.query(req("foo"));
+    assertEquals(USELESS_OUTPUT, out);
+  }
+
+  public void testLazy() {
+    PluginBag.PluginHolder<QueryResponseWriter> qrw =
+        h.getCore().getResponseWriters().getRegistry().get("useless");
+    assertTrue("Should be a lazy class", qrw instanceof PluginBag.LazyPluginHolder);
+
+    qrw = h.getCore().getResponseWriters().getRegistry().get("xml");
+    assertTrue("Should not be a lazy class", qrw.isLoaded());
+    assertTrue("Should not be a lazy class", qrw.getClass() == PluginBag.PluginHolder.class);
+  }
+
+  ////////////////////////////////////////////////////////////////////////////
+  /** An output writer that doesn't do anything useful. */
+  public static class UselessOutputWriter implements QueryResponseWriter {
+
+    public UselessOutputWriter() {}
+
+    @Override
+    public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response)
         throws IOException {
-            writer.write(USELESS_OUTPUT);
-        }
-
-      @Override
-      public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
-        return CONTENT_TYPE_TEXT_UTF8;
-      }
-
+      writer.write(USELESS_OUTPUT);
     }
 
+    @Override
+    public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
+      return CONTENT_TYPE_TEXT_UTF8;
+    }
+  }
 }
diff --git a/solr/core/src/test/org/apache/solr/SampleTest.java b/solr/core/src/test/org/apache/solr/SampleTest.java
index 407a483..e542d02 100644
--- a/solr/core/src/test/org/apache/solr/SampleTest.java
+++ b/solr/core/src/test/org/apache/solr/SampleTest.java
@@ -22,99 +22,92 @@ import org.apache.solr.util.*;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-/**
- * This is an example of how to write a JUnit tests for Solr using the
- * SolrTestCaseJ4
- */
+/** This is an example of how to write a JUnit tests for Solr using the SolrTestCaseJ4 */
 public class SampleTest extends SolrTestCaseJ4 {
 
   /**
    * All subclasses of SolrTestCaseJ4 should initialize the core.
    *
-   * <p>
-   * Note that different tests can use different schemas/configs by referring
-   * to any crazy path they want (as long as it works).
-   * </p>
+   * <p>Note that different tests can use different schemas/configs by referring to any crazy path
+   * they want (as long as it works).
    */
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solr/crazy-path-to-config.xml","solr/crazy-path-to-schema.xml");
+    initCore("solr/crazy-path-to-config.xml", "solr/crazy-path-to-schema.xml");
   }
-    
-  /**
-   * Demonstration of some of the simple ways to use the base class
-   */
+
+  /** Demonstration of some of the simple ways to use the base class */
   @Test
   public void testSimple() {
-    lrf.args.put(CommonParams.VERSION,"2.2");
-    assertU("Simple assertion that adding a document works",
-            adoc("id",  "4055",
-                 "subject", "Hoss the Hoss man Hostetter"));
+    lrf.args.put(CommonParams.VERSION, "2.2");
+    assertU(
+        "Simple assertion that adding a document works",
+        adoc(
+            "id", "4055",
+            "subject", "Hoss the Hoss man Hostetter"));
 
     /* alternate syntax, no label */
-    assertU(adoc("id",  "4056",
-                 "subject", "Some Other Guy"));
+    assertU(
+        adoc(
+            "id", "4056",
+            "subject", "Some Other Guy"));
 
     assertU(commit());
     assertU(optimize());
 
-    assertQ("couldn't find subject hoss",
-            req("subject:Hoss")
-            ,"//result[@numFound=1]"
-            ,"//str[@name='id'][.='4055']"
-            );
+    assertQ(
+        "couldn't find subject hoss",
+        req("subject:Hoss"),
+        "//result[@numFound=1]",
+        "//str[@name='id'][.='4055']");
   }
 
-  /**
-   * Demonstration of some of the more complex ways to use the base class
-   */
+  /** Demonstration of some of the more complex ways to use the base class */
   @Test
   public void testAdvanced() throws Exception {
-    lrf.args.put(CommonParams.VERSION,"2.2");        
-    assertU("less common case, a complex addition with options",
-            add(doc("id", "4059",
-                    "subject", "Who Me?"),
-                "overwrite", "false"));
+    lrf.args.put(CommonParams.VERSION, "2.2");
+    assertU(
+        "less common case, a complex addition with options",
+        add(
+            doc(
+                "id", "4059",
+                "subject", "Who Me?"),
+            "overwrite",
+            "false"));
 
-    assertU("or just make the raw XML yourself",
-            "<add overwrite=\"false\">" +
-            doc("id", "4059",
-                "subject", "Who Me Again?") + "</add>");
+    assertU(
+        "or just make the raw XML yourself",
+        "<add overwrite=\"false\">"
+            + doc(
+                "id", "4059",
+                "subject", "Who Me Again?")
+            + "</add>");
 
     /* or really make the xml yourself */
-    assertU("<add><doc><field name=\"id\">4055</field>"
-            +"<field name=\"subject\">Hoss the Hoss man Hostetter</field>"
-            +"</doc></add>");
-        
+    assertU(
+        "<add><doc><field name=\"id\">4055</field>"
+            + "<field name=\"subject\">Hoss the Hoss man Hostetter</field>"
+            + "</doc></add>");
+
     assertU("<commit/>");
     assertU("<optimize/>");
-        
+
     /* access the default LocalRequestFactory directly to make a request */
-    SolrQueryRequest req = lrf.makeRequest( "subject:Hoss" );
-    assertQ("couldn't find subject hoss",
-            req
-            ,"//result[@numFound=1]"
-            ,"//str[@name='id'][.='4055']"
-            );
+    SolrQueryRequest req = lrf.makeRequest("subject:Hoss");
+    assertQ(
+        "couldn't find subject hoss", req, "//result[@numFound=1]", "//str[@name='id'][.='4055']");
 
     /* make your own LocalRequestFactory to build a request
      *
      * Note: the qt proves we are using our custom config...
      */
-    TestHarness.LocalRequestFactory l = h.getRequestFactory
-      ("/crazy_custom_qt",100,200,CommonParams.VERSION,"2.2");
-    assertQ("how did i find Mack Daddy? ",
-            l.makeRequest( "Mack Daddy" )
-            ,"//result[@numFound=0]"
-            );
+    TestHarness.LocalRequestFactory l =
+        h.getRequestFactory("/crazy_custom_qt", 100, 200, CommonParams.VERSION, "2.2");
+    assertQ("how did i find Mack Daddy? ", l.makeRequest("Mack Daddy"), "//result[@numFound=0]");
 
     /* you can access the harness directly as well*/
-    assertNull("how did i find Mack Daddy? ",
-               h.validateQuery(l.makeRequest( "Mack Daddy" )
-                               ,"//result[@numFound=0]"
-                               ));
-        
+    assertNull(
+        "how did i find Mack Daddy? ",
+        h.validateQuery(l.makeRequest("Mack Daddy"), "//result[@numFound=0]"));
   }
 }
-
-
diff --git a/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java b/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
index c0a2199..a76dfae 100644
--- a/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
+++ b/solr/core/src/test/org/apache/solr/SolrInfoBeanTest.java
@@ -16,6 +16,12 @@
  */
 package org.apache.solr;
 
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
 import org.apache.lucene.util.TestUtil;
 import org.apache.solr.core.SolrInfoBean;
 import org.apache.solr.handler.admin.LukeRequestHandler;
@@ -26,26 +32,17 @@ import org.apache.solr.metrics.SolrMetricManager;
 import org.apache.solr.metrics.SolrMetricsContext;
 import org.apache.solr.search.CaffeineCache;
 import org.junit.BeforeClass;
-import java.io.File;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
 
-/**
- * A simple test used to increase code coverage for some standard things...
- */
-public class SolrInfoBeanTest extends SolrTestCaseJ4
-{
+/** A simple test used to increase code coverage for some standard things... */
+public class SolrInfoBeanTest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void beforeClass() throws Exception {
-    initCore("solrconfig.xml","schema.xml");
+    initCore("solrconfig.xml", "schema.xml");
   }
 
   /**
-   * Gets a list of everything we can find in the classpath and makes sure it has
-   * a name, description, etc...
+   * Gets a list of everything we can find in the classpath and makes sure it has a name,
+   * description, etc...
    */
   public void testCallMBeanInfo() throws Exception {
     List<Class<?>> classes = new ArrayList<>();
@@ -54,40 +51,42 @@ public class SolrInfoBeanTest extends SolrTestCaseJ4
     classes.addAll(getClassesForPackage(LukeRequestHandler.class.getPackage().getName()));
     classes.addAll(getClassesForPackage(DefaultSolrHighlighter.class.getPackage().getName()));
     classes.addAll(getClassesForPackage(CaffeineCache.class.getPackage().getName()));
-   // System.out.println(classes);
-    
+    // System.out.println(classes);
+
     int checked = 0;
     SolrMetricManager metricManager = h.getCoreContainer().getMetricManager();
     String registry = h.getCore().getCoreMetricManager().getRegistryName();
     SolrMetricsContext solrMetricsContext = new SolrMetricsContext(metricManager, registry, "foo");
     String scope = TestUtil.randomSimpleString(random(), 2, 10);
-    for(Class<?> clazz : classes ) {
-      if( SolrInfoBean.class.isAssignableFrom( clazz ) ) {
+    for (Class<?> clazz : classes) {
+      if (SolrInfoBean.class.isAssignableFrom(clazz)) {
         try {
           SolrInfoBean info = clazz.asSubclass(SolrInfoBean.class).getConstructor().newInstance();
           info.initializeMetrics(solrMetricsContext, scope);
 
-          //System.out.println( info.getClass() );
-          assertNotNull( info.getClass().getCanonicalName(), info.getName() );
-          assertNotNull( info.getClass().getCanonicalName(), info.getDescription() );
-          assertNotNull( info.getClass().getCanonicalName(), info.getCategory() );
-          
-          if( info instanceof CaffeineCache ) {
+          // System.out.println( info.getClass() );
+          assertNotNull(info.getClass().getCanonicalName(), info.getName());
+          assertNotNull(info.getClass().getCanonicalName(), info.getDescription());
+          assertNotNull(info.getClass().getCanonicalName(), info.getCategory());
+
+          if (info instanceof CaffeineCache) {
             continue;
           }
-          
-          assertNotNull( info.toString() );
+
+          assertNotNull(info.toString());
           checked++;
-        }
-        catch( ReflectiveOperationException ex ) {
+        } catch (ReflectiveOperationException ex) {
           // expected...
-          //System.out.println( "unable to initialize: "+clazz );
+          // System.out.println( "unable to initialize: "+clazz );
         }
       }
     }
-    assertTrue( "there are at least 10 SolrInfoBean that should be found in the classpath, found " + checked, checked > 10 );
+    assertTrue(
+        "there are at least 10 SolrInfoBean that should be found in the classpath, found "
+            + checked,
+        checked > 10);
   }
-  
+
   private static List<Class<?>> getClassesForPackage(String pckgname) throws Exception {
     ArrayList<File> directories = new ArrayList<>();
     ClassLoader cld = h.getCore().getResourceLoader().getClassLoader();
@@ -95,29 +94,32 @@ public class SolrInfoBeanTest extends SolrTestCaseJ4
     Enumeration<URL> resources = cld.getResources(path);
     while (resources.hasMoreElements()) {
       final URI uri = resources.nextElement().toURI();
-      if (!"file".equalsIgnoreCase(uri.getScheme()))
-        continue;
+      if (!"file".equalsIgnoreCase(uri.getScheme())) continue;
       final File f = new File(uri);
       directories.add(f);
     }
-      
+
     ArrayList<Class<?>> classes = new ArrayList<>();
     for (File directory : directories) {
       if (directory.exists()) {
         String[] files = directory.list();
         for (String file : files) {
           if (file.endsWith(".class")) {
-             String clazzName = file.substring(0, file.length() - 6);
-             // exclude Test classes that happen to be in these packages.
-             // class.ForName'ing some of them can cause trouble.
-             if (!clazzName.endsWith("Test") && !clazzName.startsWith("Test")) {
-               classes.add(Class.forName(pckgname + '.' + clazzName));
-             }
+            String clazzName = file.substring(0, file.length() - 6);
+            // exclude Test classes that happen to be in these packages.
+            // class.ForName'ing some of them can cause trouble.
+            if (!clazzName.endsWith("Test") && !clazzName.startsWith("Test")) {
+              classes.add(Class.forName(pckgname + '.' + clazzName));
+            }
           }
         }
       }
     }
-    assertFalse("No classes found in package '"+pckgname+"'; maybe your test classes are packaged as JAR file?", classes.isEmpty());
+    assertFalse(
+        "No classes found in package '"
+            + pckgname
+            + "'; maybe your test classes are packaged as JAR file?",
+        classes.isEmpty());
     return classes;
   }
 }
diff --git a/solr/core/src/test/org/apache/solr/SolrTestCaseJ4DeleteCoreTest.java b/solr/core/src/test/org/apache/solr/SolrTestCaseJ4DeleteCoreTest.java
index 8c344f9..3167204b 100644
--- a/solr/core/src/test/org/apache/solr/SolrTestCaseJ4DeleteCoreTest.java
+++ b/solr/core/src/test/org/apache/solr/SolrTestCaseJ4DeleteCoreTest.java
@@ -21,16 +21,13 @@ package org.apache.solr;
 public class SolrTestCaseJ4DeleteCoreTest extends SolrTestCaseJ4 {
 
   public void testDeleteCore() throws Exception {
-    initCore("solrconfig.xml","schema.xml");
+    initCore("solrconfig.xml", "schema.xml");
     assertU(adoc("id", "1"));
     assertU(commit());
     assertQ(req("q", "*:*"), "//*[@numFound='1']");
 
     deleteCore();
-    initCore("solrconfig.xml","schema.xml");
+    initCore("solrconfig.xml", "schema.xml");
     assertQ(req("q", "*:*"), "//*[@numFound='0']");
   }
-
-
-
 }
diff --git a/solr/core/src/test/org/apache/solr/SolrTestCaseJ4Test.java b/solr/core/src/test/org/apache/solr/SolrTestCaseJ4Test.java
index fc995e3..d281eb7 100644
--- a/solr/core/src/test/org/apache/solr/SolrTestCaseJ4Test.java
+++ b/solr/core/src/test/org/apache/solr/SolrTestCaseJ4Test.java
@@ -17,34 +17,35 @@
 package org.apache.solr;
 
 import java.io.File;
-
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-
 public class SolrTestCaseJ4Test extends SolrTestCaseJ4 {
 
   private static String tmpSolrHome;
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    // Create a temporary directory that holds a core NOT named "collection1". Use the smallest configuration sets
-    // we can so we don't copy that much junk around.
+    // Create a temporary directory that holds a core NOT named "collection1". Use the smallest
+    // configuration sets we can so we don't copy that much junk around.
     tmpSolrHome = createTempDir().toFile().getAbsolutePath();
 
     File subHome = new File(new File(tmpSolrHome, "core0"), "conf");
     assertTrue("Failed to make subdirectory ", subHome.mkdirs());
     String top = SolrTestCaseJ4.TEST_HOME() + "/collection1/conf";
     FileUtils.copyFile(new File(top, "schema-tiny.xml"), new File(subHome, "schema-tiny.xml"));
-    FileUtils.copyFile(new File(top, "solrconfig-minimal.xml"), new File(subHome, "solrconfig-minimal.xml"));
-    FileUtils.copyFile(new File(top, "solrconfig.snippet.randomindexconfig.xml"), new File(subHome, "solrconfig.snippet.randomindexconfig.xml"));
+    FileUtils.copyFile(
+        new File(top, "solrconfig-minimal.xml"), new File(subHome, "solrconfig-minimal.xml"));
+    FileUtils.copyFile(
+        new File(top, "solrconfig.snippet.randomindexconfig.xml"),
+        new File(subHome, "solrconfig.snippet.randomindexconfig.xml"));
 
     FileUtils.copyDirectory(new File(tmpSolrHome, "core0"), new File(tmpSolrHome, "core1"));
-    // Core discovery will default to the name of the dir the core.properties file is in. So if everything else is
-    // OK as defaults, just the _presence_ of this file is sufficient.
+    // Core discovery will default to the name of the dir the core.properties file is in. So if
+    // everything else is OK as defaults, just the _presence_ of this file is sufficient.
     FileUtils.touch(new File(tmpSolrHome, "core0/core.properties"));
     FileUtils.touch(new File(tmpSolrHome, "core1/core.properties"));
 
@@ -54,9 +55,7 @@ public class SolrTestCaseJ4Test extends SolrTestCaseJ4 {
   }
 
   @AfterClass
-  public static void AfterClass() throws Exception {
-
-  }
+  public static void AfterClass() throws Exception {}
 
   @Test
   public void testCorrectCore() throws Exception {
@@ -74,13 +73,16 @@ public class SolrTestCaseJ4Test extends SolrTestCaseJ4 {
     params.add("rows", "42");
     assertEquals(params.toString(), params("q", "*:*", "rows", "42").toString());
 
-    expectThrows(RuntimeException.class, () -> {
-      params("parameterWithoutValue");
-    });
-
-    expectThrows(RuntimeException.class, () -> {
-      params("q", "*:*", "rows", "42", "parameterWithoutValue");
-    });
+    expectThrows(
+        RuntimeException.class,
+        () -> {
+          params("parameterWithoutValue");
+        });
+
+    expectThrows(
+        RuntimeException.class,
+        () -> {
+          params("q", "*:*", "rows", "42", "parameterWithoutValue");
+        });
   }
-
 }
diff --git a/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java b/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java
index d21b5db..e819cf6 100644
--- a/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java
+++ b/solr/core/src/test/org/apache/solr/TestCrossCoreJoin.java
@@ -16,10 +16,9 @@
  */
 package org.apache.solr;
 
+import com.google.common.collect.ImmutableMap;
 import java.io.StringWriter;
 import java.util.Collections;
-
-import com.google.common.collect.ImmutableMap;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.core.CoreContainer;
@@ -44,7 +43,7 @@ public class TestCrossCoreJoin extends SolrTestCaseJ4 {
   public static void beforeTests() throws Exception {
     System.setProperty("enable.update.log", "false"); // schema12 doesn't support _version_
     System.setProperty("solr.filterCache.async", "true");
-//    initCore("solrconfig.xml","schema12.xml");
+    //    initCore("solrconfig.xml","schema12.xml");
 
     // File testHome = createTempDir().toFile();
     // FileUtils.copyDirectory(getFile("solrj/solr"), testHome);
@@ -53,22 +52,106 @@ public class TestCrossCoreJoin extends SolrTestCaseJ4 {
 
     fromCore = coreContainer.create("fromCore", ImmutableMap.of("configSet", "minimal"));
 
-    assertU(add(doc("id", "1", "id_s_dv", "1", "name", "john", "title", "Director", "dept_s", "Engineering")));
-    assertU(add(doc("id", "2", "id_s_dv", "2", "name", "mark", "title", "VP", "dept_s", "Marketing")));
-    assertU(add(doc("id", "3", "id_s_dv", "3", "name", "nancy", "title", "MTS", "dept_s", "Sales")));
-    assertU(add(doc("id", "4", "id_s_dv", "4", "name", "dave", "title", "MTS", "dept_s", "Support", "dept_s", "Engineering")));
-    assertU(add(doc("id", "5", "id_s_dv", "5", "name", "tina", "title", "VP", "dept_s", "Engineering")));
+    assertU(
+        add(
+            doc(
+                "id",
+                "1",
+                "id_s_dv",
+                "1",
+                "name",
+                "john",
+                "title",
+                "Director",
+                "dept_s",
+                "Engineering")));
+    assertU(
+        add(doc("id", "2", "id_s_dv", "2", "name", "mark", "title", "VP", "dept_s", "Marketing")));
+    assertU(
+        add(doc("id", "3", "id_s_dv", "3", "name", "nancy", "title", "MTS", "dept_s", "Sales")));
+    assertU(
+        add(
+            doc(
+                "id",
+                "4",
+                "id_s_dv",
+                "4",
+                "name",
+                "dave",
+                "title",
+                "MTS",
+                "dept_s",
+                "Support",
+                "dept_s",
+                "Engineering")));
+    assertU(
+        add(
+            doc(
+                "id",
+                "5",
+                "id_s_dv",
+                "5",
+                "name",
+                "tina",
+                "title",
+                "VP",
+                "dept_s",
+                "Engineering")));
     assertU(commit());
 
-    update(fromCore, add(doc("id", "10", "id_s_dv", "10", "dept_id_s", "Engineering", "text", "These guys develop stuff", "cat", "dev")));
-    update(fromCore, add(doc("id", "11", "id_s_dv", "11", "dept_id_s", "Marketing", "text", "These guys make you look good")));
-    update(fromCore, add(doc("id", "12", "id_s_dv", "12", "dept_id_s", "Sales", "text", "These guys sell stuff")));
-    update(fromCore, add(doc("id", "13", "id_s_dv", "13", "dept_id_s", "Support", "text", "These guys help customers")));
+    update(
+        fromCore,
+        add(
+            doc(
+                "id",
+                "10",
+                "id_s_dv",
+                "10",
+                "dept_id_s",
+                "Engineering",
+                "text",
+                "These guys develop stuff",
+                "cat",
+                "dev")));
+    update(
+        fromCore,
+        add(
+            doc(
+                "id",
+                "11",
+                "id_s_dv",
+                "11",
+                "dept_id_s",
+                "Marketing",
+                "text",
+                "These guys make you look good")));
+    update(
+        fromCore,
+        add(
+            doc(
+                "id",
+                "12",
+                "id_s_dv",
+                "12",
+                "dept_id_s",
+                "Sales",
+                "text",
+                "These guys sell stuff")));
+    update(
+        fromCore,
+        add(
+            doc(
+                "id",
+                "13",
+                "id_s_dv",
+                "13",
+                "dept_id_s",
+                "Support",
+                "text",
+                "These guys help customers")));
     update(fromCore, commit());
-
   }
 
-
   public static String update(SolrCore core, String xml) throws Exception {
     DirectSolrConnection connection = new DirectSolrConnection(core);
     SolrRequestHandler handler = core.getRequestHandler("/update");
@@ -86,36 +169,55 @@ public class TestCrossCoreJoin extends SolrTestCaseJ4 {
   }
 
   void doTestJoin(String joinPrefix) throws Exception {
-    assertJQ(req("q", joinPrefix + " from=dept_id_s to=dept_s fromIndex=fromCore}cat:dev", "fl", "id",
-        "debugQuery", random().nextBoolean() ? "true":"false")
-        , "/response=={'numFound':3,'start':0,'numFoundExact':true,'docs':[{'id':'1'},{'id':'4'},{'id':'5'}]}"
-    );
-
-    assertJQ(req( "qt", "/export", 
-            "q", joinPrefix + " from=dept_id_s to=dept_s fromIndex=fromCore}cat:dev", "fl", "id_s_dv",
-            "sort", "id_s_dv asc",
-            "debugQuery", random().nextBoolean() ? "true":"false")
-            , "/response=={'numFound':3,'docs':[{'id_s_dv':'1'},{'id_s_dv':'4'},{'id_s_dv':'5'}]}"
-    );
+    assertJQ(
+        req(
+            "q",
+            joinPrefix + " from=dept_id_s to=dept_s fromIndex=fromCore}cat:dev",
+            "fl",
+            "id",
+            "debugQuery",
+            random().nextBoolean() ? "true" : "false"),
+        "/response=={'numFound':3,'start':0,'numFoundExact':true,'docs':[{'id':'1'},{'id':'4'},{'id':'5'}]}");
+
+    assertJQ(
+        req(
+            "qt",
+            "/export",
+            "q",
+            joinPrefix + " from=dept_id_s to=dept_s fromIndex=fromCore}cat:dev",
+            "fl",
+            "id_s_dv",
+            "sort",
+            "id_s_dv asc",
+            "debugQuery",
+            random().nextBoolean() ? "true" : "false"),
+        "/response=={'numFound':3,'docs':[{'id_s_dv':'1'},{'id_s_dv':'4'},{'id_s_dv':'5'}]}");
     assertFalse(fromCore.isClosed());
     assertFalse(h.getCore().isClosed());
 
     // find people that develop stuff - but limit via filter query to a name of "john"
     // this tests filters being pushed down to queries (SOLR-3062)
-    assertJQ(req("q", joinPrefix + " from=dept_id_s to=dept_s fromIndex=fromCore}cat:dev", "fl", "id", "fq", "name:john",
-        "debugQuery", random().nextBoolean() ? "true":"false")
-        , "/response=={'numFound':1,'start':0,'numFoundExact':true,'docs':[{'id':'1'}]}"
-    );
+    assertJQ(
+        req(
+            "q",
+            joinPrefix + " from=dept_id_s to=dept_s fromIndex=fromCore}cat:dev",
+            "fl",
+            "id",
+            "fq",
+            "name:john",
+            "debugQuery",
+            random().nextBoolean() ? "true" : "false"),
+        "/response=={'numFound':1,'start':0,'numFoundExact':true,'docs':[{'id':'1'}]}");
   }
 
   @Test
   public void testCoresAreDifferent() throws Exception {
     assertQEx("schema12.xml" + " has no \"cat\" field", req("cat:*"), ErrorCode.BAD_REQUEST);
-    final LocalSolrQueryRequest req = new LocalSolrQueryRequest(fromCore, "cat:*", "/select", 0, 100, Collections.emptyMap());
+    final LocalSolrQueryRequest req =
+        new LocalSolrQueryRequest(fromCore, "cat:*", "/select", 0, 100, Collections.emptyMap());
     final String resp = query(fromCore, req);
     assertTrue(resp, resp.contains("numFound=\"1\""));
     assertTrue(resp, resp.contains("<str name=\"id\">10</str>"));
-
   }
 
   public String query(SolrCore core, SolrQueryRequest req) throws Exception {
@@ -123,7 +225,7 @@ public class TestCrossCoreJoin extends SolrTestCaseJ4 {
     if (req.getParams().get("qt") != null) {
       handler = req.getParams().get("qt");
     }
-    if (req.getParams().get("wt") == null){
+    if (req.getParams().get("wt") == null) {
       ModifiableSolrParams params = new ModifiableSolrParams(req.getParams());
       params.set("wt", "xml");
       req.setParams(params);
diff --git a/solr/core/src/test/org/apache/solr/TestCursorMarkWithoutUniqueKey.java b/solr/core/src/test/org/apache/solr/TestCursorMarkWithoutUniqueKey.java
index a98d44f..1c0638d 100644
--- a/solr/core/src/test/org/apache/solr/TestCursorMarkWithoutUniqueKey.java
+++ b/solr/core/src/test/org/apache/solr/TestCursorMarkWithoutUniqueKey.java
@@ -16,34 +16,36 @@
  */
 package org.apache.solr;
 
-import org.apache.solr.schema.SchemaField;
 import static org.apache.solr.common.params.CursorMarkParams.CURSOR_MARK_START;
 
-import org.junit.Before;
+import org.apache.solr.schema.SchemaField;
 import org.junit.After;
+import org.junit.Before;
 
-/**
- * Tests that cursor requests fail unless the IndexSchema defines a uniqueKey.
- */
+/** Tests that cursor requests fail unless the IndexSchema defines a uniqueKey. */
 public class TestCursorMarkWithoutUniqueKey extends SolrTestCaseJ4 {
 
-  public final static String TEST_SOLRCONFIG_NAME = "solrconfig-minimal.xml";
-  public final static String TEST_SCHEMAXML_NAME = "schema-minimal.xml";
+  public static final String TEST_SOLRCONFIG_NAME = "solrconfig-minimal.xml";
+  public static final String TEST_SCHEMAXML_NAME = "schema-minimal.xml";
 
   @Before
   public void beforeSetupCore() throws Exception {
-    System.setProperty("solr.test.useFilterForSortedQuery", Boolean.toString(random().nextBoolean()));
-    System.setProperty("solr.test.useFilterForSortedQuery", Boolean.toString(random().nextBoolean()));
+    System.setProperty(
+        "solr.test.useFilterForSortedQuery", Boolean.toString(random().nextBoolean()));
+    System.setProperty(
+        "solr.test.useFilterForSortedQuery", Boolean.toString(random().nextBoolean()));
     initCore(TEST_SOLRCONFIG_NAME, TEST_SCHEMAXML_NAME);
     SchemaField uniqueKeyField = h.getCore().getLatestSchema().getUniqueKeyField();
-    assertNull("This test requires that the schema not have a uniquekey field -- someone violated that in " + TEST_SCHEMAXML_NAME, uniqueKeyField);
+    assertNull(
+        "This test requires that the schema not have a uniquekey field -- someone violated that in "
+            + TEST_SCHEMAXML_NAME,
+        uniqueKeyField);
   }
 
   @After
   public void afterDestroyCore() throws Exception {
     deleteCore();
   }
-  
 
   public void test() throws Exception {
 
@@ -51,13 +53,15 @@ public class TestCursorMarkWithoutUniqueKey extends SolrTestCaseJ4 {
     assertU(commit());
 
     try {
-      ignoreException("Cursor functionality is not available unless the IndexSchema defines a uniqueKey field");
-      expectThrows(RuntimeException.class,
+      ignoreException(
+          "Cursor functionality is not available unless the IndexSchema defines a uniqueKey field");
+      expectThrows(
+          RuntimeException.class,
           "No exception when querying with a cursorMark with no uniqueKey defined.",
-          () -> assertQ(req("q", "*:*", "sort", "fld desc", "cursorMark", CURSOR_MARK_START))
-      );
+          () -> assertQ(req("q", "*:*", "sort", "fld desc", "cursorMark", CURSOR_MARK_START)));
     } finally {
-      unIgnoreException("Cursor functionality is not available unless the IndexSchema defines a uniqueKey field");
+      unIgnoreException(
+          "Cursor functionality is not available unless the IndexSchema defines a uniqueKey field");
     }
   }
 }
diff --git a/solr/core/src/test/org/apache/solr/TestDistributedGrouping.java b/solr/core/src/test/org/apache/solr/TestDistributedGrouping.java
index 868a67c..7b72646 100644
--- a/solr/core/src/test/org/apache/solr/TestDistributedGrouping.java
+++ b/solr/core/src/test/org/apache/solr/TestDistributedGrouping.java
@@ -16,10 +16,12 @@
  */
 package org.apache.solr;
 
+import static org.hamcrest.CoreMatchers.containsString;
+
 import java.io.IOException;
 import java.util.List;
-
 import org.apache.lucene.util.LuceneTestCase.Slow;
+import org.apache.solr.SolrTestCaseJ4.SuppressPointFields;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.response.QueryResponse;
@@ -29,37 +31,34 @@ import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.SolrTestCaseJ4.SuppressPointFields;
 import org.junit.Test;
 
-import static org.hamcrest.CoreMatchers.containsString;
-
 /**
- * TODO? perhaps use:
- *  http://docs.codehaus.org/display/JETTY/ServletTester
- * rather then open a real connection?
+ * TODO? perhaps use: http://docs.codehaus.org/display/JETTY/ServletTester rather then open a real
+ * connection?
  *
  * @since solr 4.0
  */
 @Slow
-@SuppressPointFields(bugUrl="https://issues.apache.org/jira/browse/SOLR-10844")
+@SuppressPointFields(bugUrl = "https://issues.apache.org/jira/browse/SOLR-10844")
 public class TestDistributedGrouping extends BaseDistributedSearchTestCase {
 
   public TestDistributedGrouping() {
-    // SOLR-10844: Even with points suppressed, this test breaks if we (randomize) docvalues="true" on trie fields?!?!?!!?
-    System.setProperty(NUMERIC_DOCVALUES_SYSPROP,"false");
+    // SOLR-10844: Even with points suppressed, this test breaks if we (randomize) docvalues="true"
+    // on trie fields?!?!?!!?
+    System.setProperty(NUMERIC_DOCVALUES_SYSPROP, "false");
   }
-  
-  String t1="a_t";
-  String i1dv="a_idv";
-  String i1="a_i1";
-  String s1="a_s";
+
+  String t1 = "a_t";
+  String i1dv = "a_idv";
+  String i1 = "a_i1";
+  String s1 = "a_s";
   String s1dv = "a_s_dvo";
   String b1dv = "a_b_dvo";
   String tlong = "other_tl1";
   String tdate_a = "a_n_tdt1"; // use single-valued date field
   String tdate_b = "b_n_tdt1";
-  String oddField="oddField_s1";
+  String oddField = "oddField_s1";
 
   @Test
   @SuppressWarnings({"unchecked"})
@@ -70,97 +69,368 @@ public class TestDistributedGrouping extends BaseDistributedSearchTestCase {
     handle.clear();
     handle.put("timestamp", SKIPVAL);
     handle.put("_version_", SKIP);
-    handle.put("grouped", UNORDERED);   // distrib grouping doesn't guarantee order of top level group commands
+    // distrib grouping doesn't guarantee order of top level group commands
+    handle.put("grouped", UNORDERED);
 
     // Test distributed grouping with empty indices
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "hl","true","hl.fl",t1);
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "facet", "true", "facet.field", t1);
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "stats", "true", "stats.field", i1);
-    query("q", "kings", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "spellcheck", "true", "spellcheck.build", "true", "qt", "spellCheckCompRH", "df", "subject");
-    query("q", "*:*", "fq", s1 + ":a", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "group.truncate", "true", "facet", "true", "facet.field", t1);
-
-    indexr(id,1, i1, 100, tlong, 100, i1dv, 100, t1,"now is the time for all good men",
-           tdate_a, "2010-04-20T11:00:00Z", b1dv, true,
-           tdate_b, "2009-08-20T11:00:00Z", s1dv, "Trillian",
-           "foo_f", 1.414f, "foo_b", "true", "foo_d", 1.414d);
-    indexr(id,2, i1, 50 , tlong, 50, i1dv, 50, t1,"to come to the aid of their country.",
-           tdate_a, "2010-05-02T11:00:00Z", b1dv, false,
-           tdate_b, "2009-11-02T11:00:00Z");
-    indexr(id,3, i1, 2, tlong, 2,t1,"how now brown cow",
-           tdate_a, "2010-05-03T11:00:00Z");
-    indexr(id,4, i1, -100 ,tlong, 101, i1dv, 101,
-           t1,"the quick fox jumped over the lazy dog", b1dv, true, s1dv, "Zaphod",
-           tdate_a, "2010-05-03T11:00:00Z",
-           tdate_b, "2010-05-03T11:00:00Z");
-    indexr(id,5, i1, 500, tlong, 500 , i1dv, 500,
-           t1,"the quick fox jumped way over the lazy dog",
-           tdate_a, "2010-05-05T11:00:00Z");
-    indexr(id,6, i1, -600, tlong, 600 , i1dv, 600, t1,"humpty dumpy sat on a wall");
-    indexr(id,7, i1, 123, tlong, 123 ,i1dv, 123, t1,"humpty dumpy had a great fall");
-    indexr(id,8, i1, 876, tlong, 876,
-           tdate_b, "2010-01-05T11:00:00Z",
-           t1,"all the kings horses and all the kings men");
-    indexr(id,9, i1, 7, tlong, 7, i1dv, 7, t1,"couldn't put humpty together again");
-    indexr(id,10, i1, 4321, tlong, 4321, i1dv, 4321, t1,"this too shall pass");
-    indexr(id,11, i1, -987, tlong, 987, i1dv, 2015,
-           t1,"An eye for eye only ends up making the whole world blind.");
-    indexr(id,12, i1, 379, tlong, 379, i1dv, 379,
-           t1,"Great works are performed, not by strength, but by perseverance.");
-
-    indexr(id, 14, "SubjectTerms_mfacet", new String[]  {"mathematical models", "mathematical analysis"});
-    indexr(id, 15, "SubjectTerms_mfacet", new String[]  {"test 1", "test 2", "test3"});
-    indexr(id, 16, "SubjectTerms_mfacet", new String[]  {"test 1", "test 2", "test3"});
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "hl",
+        "true",
+        "hl.fl",
+        t1);
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "facet",
+        "true",
+        "facet.field",
+        t1);
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "stats",
+        "true",
+        "stats.field",
+        i1);
+    query(
+        "q",
+        "kings",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "spellcheck",
+        "true",
+        "spellcheck.build",
+        "true",
+        "qt",
+        "spellCheckCompRH",
+        "df",
+        "subject");
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "group.truncate",
+        "true",
+        "facet",
+        "true",
+        "facet.field",
+        t1);
+
+    indexr(
+        id,
+        1,
+        i1,
+        100,
+        tlong,
+        100,
+        i1dv,
+        100,
+        t1,
+        "now is the time for all good men",
+        tdate_a,
+        "2010-04-20T11:00:00Z",
+        b1dv,
+        true,
+        tdate_b,
+        "2009-08-20T11:00:00Z",
+        s1dv,
+        "Trillian",
+        "foo_f",
+        1.414f,
+        "foo_b",
+        "true",
+        "foo_d",
+        1.414d);
+    indexr(
+        id,
+        2,
+        i1,
+        50,
+        tlong,
+        50,
+        i1dv,
+        50,
+        t1,
+        "to come to the aid of their country.",
+        tdate_a,
+        "2010-05-02T11:00:00Z",
+        b1dv,
+        false,
+        tdate_b,
+        "2009-11-02T11:00:00Z");
+    indexr(id, 3, i1, 2, tlong, 2, t1, "how now brown cow", tdate_a, "2010-05-03T11:00:00Z");
+    indexr(
+        id,
+        4,
+        i1,
+        -100,
+        tlong,
+        101,
+        i1dv,
+        101,
+        t1,
+        "the quick fox jumped over the lazy dog",
+        b1dv,
+        true,
+        s1dv,
+        "Zaphod",
+        tdate_a,
+        "2010-05-03T11:00:00Z",
+        tdate_b,
+        "2010-05-03T11:00:00Z");
+    indexr(
+        id,
+        5,
+        i1,
+        500,
+        tlong,
+        500,
+        i1dv,
+        500,
+        t1,
+        "the quick fox jumped way over the lazy dog",
+        tdate_a,
+        "2010-05-05T11:00:00Z");
+    indexr(id, 6, i1, -600, tlong, 600, i1dv, 600, t1, "humpty dumpy sat on a wall");
+    indexr(id, 7, i1, 123, tlong, 123, i1dv, 123, t1, "humpty dumpy had a great fall");
+    indexr(
+        id,
+        8,
+        i1,
+        876,
+        tlong,
+        876,
+        tdate_b,
+        "2010-01-05T11:00:00Z",
+        t1,
+        "all the kings horses and all the kings men");
+    indexr(id, 9, i1, 7, tlong, 7, i1dv, 7, t1, "couldn't put humpty together again");
+    indexr(id, 10, i1, 4321, tlong, 4321, i1dv, 4321, t1, "this too shall pass");
+    indexr(
+        id,
+        11,
+        i1,
+        -987,
+        tlong,
+        987,
+        i1dv,
+        2015,
+        t1,
+        "An eye for eye only ends up making the whole world blind.");
+    indexr(
+        id,
+        12,
+        i1,
+        379,
+        tlong,
+        379,
+        i1dv,
+        379,
+        t1,
+        "Great works are performed, not by strength, but by perseverance.");
+
+    indexr(
+        id,
+        14,
+        "SubjectTerms_mfacet",
+        new String[] {"mathematical models", "mathematical analysis"});
+    indexr(id, 15, "SubjectTerms_mfacet", new String[] {"test 1", "test 2", "test3"});
+    indexr(id, 16, "SubjectTerms_mfacet", new String[] {"test 1", "test 2", "test3"});
     String[] vals = new String[100];
-    for (int i=0; i<100; i++) {
+    for (int i = 0; i < 100; i++) {
       vals[i] = "test " + i;
     }
     indexr(id, 17, "SubjectTerms_mfacet", vals);
 
     indexr(
-        id, 18, i1, 232, tlong, 332, i1dv, 150,
-        t1,"no eggs on wall, lesson learned", b1dv, true, s1dv, "dent",
-        oddField, "odd man out"
-    );
+        id,
+        18,
+        i1,
+        232,
+        tlong,
+        332,
+        i1dv,
+        150,
+        t1,
+        "no eggs on wall, lesson learned",
+        b1dv,
+        true,
+        s1dv,
+        "dent",
+        oddField,
+        "odd man out");
     indexr(
-        id, 19, i1, 232, tlong, 432, i1dv, 300,
-        t1, "many eggs on wall", b1dv, false, s1dv, "dent",
-        oddField, "odd man in"
-    );
+        id,
+        19,
+        i1,
+        232,
+        tlong,
+        432,
+        i1dv,
+        300,
+        t1,
+        "many eggs on wall",
+        b1dv,
+        false,
+        s1dv,
+        "dent",
+        oddField,
+        "odd man in");
     indexr(
-        id, 20, i1, 232, tlong, 532, i1dv, 150,
-        t1, "some eggs on wall", b1dv, false, s1dv, "author",
-        oddField, "odd man between"
-    );
+        id,
+        20,
+        i1,
+        232,
+        tlong,
+        532,
+        i1dv,
+        150,
+        t1,
+        "some eggs on wall",
+        b1dv,
+        false,
+        s1dv,
+        "author",
+        oddField,
+        "odd man between");
     indexr(
-        id, 21, i1, 232, tlong, 632, i1dv, 120,
-        t1, "a few eggs on wall", b1dv, true, s1dv, "ford prefect",
-        oddField, "odd man under"
-    );
+        id,
+        21,
+        i1,
+        232,
+        tlong,
+        632,
+        i1dv,
+        120,
+        t1,
+        "a few eggs on wall",
+        b1dv,
+        true,
+        s1dv,
+        "ford prefect",
+        oddField,
+        "odd man under");
     indexr(
-        id, 22, i1, 232, tlong, 732, i1dv, 120,
-        t1, "any eggs on wall", b1dv, false, s1dv, "ford prefect",
-        oddField, "odd man above"
-    );
+        id,
+        22,
+        i1,
+        232,
+        tlong,
+        732,
+        i1dv,
+        120,
+        t1,
+        "any eggs on wall",
+        b1dv,
+        false,
+        s1dv,
+        "ford prefect",
+        oddField,
+        "odd man above");
     indexr(
-        id, 23, i1, 233, tlong, 734, i1dv, 120,
-        t1, "dirty eggs", b1dv, true, s1dv, "Marvin",
-        oddField, "odd eggs"
-    );
+        id,
+        23,
+        i1,
+        233,
+        tlong,
+        734,
+        i1dv,
+        120,
+        t1,
+        "dirty eggs",
+        b1dv,
+        true,
+        s1dv,
+        "Marvin",
+        oddField,
+        "odd eggs");
 
     for (int i = 100; i < 150; i++) {
       indexr(id, i);
     }
 
-    int[] values = new int[]{9999, 99999, 999999, 9999999};
+    int[] values = new int[] {9999, 99999, 999999, 9999999};
     for (int shard = 0; shard < clients.size(); shard++) {
       int groupValue = values[shard];
       for (int i = 500; i < 600; i++) {
-        index_specific(shard, 
-                       i1, groupValue, 
-                       s1, "a", 
-                       id, i * (shard + 1), 
-                       t1, random().nextInt(7));
+        index_specific(
+            shard, i1, groupValue, s1, "a", id, i * (shard + 1), t1, random().nextInt(7));
       }
     }
 
@@ -169,148 +439,857 @@ public class TestDistributedGrouping extends BaseDistributedSearchTestCase {
     // test grouping
     // The second sort = id asc . The sorting behaviour is different in dist mode. See TopDocs#merge
     // The shard the result came from matters in the order if both document sortvalues are equal
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 0, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", "id asc, _docid_ asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", "{!func}add(" + i1 + ",5) asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "facet", "true", "facet.field", t1);
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "stats", "true", "stats.field", tlong);
-    query("q", "kings", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "spellcheck", "true", "spellcheck.build", "true", "qt", "spellCheckCompRH", "df", "subject");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "facet", "true", "hl","true","hl.fl",t1);
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "group.sort", "id desc");
-
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.offset", 5, "group.limit", -1, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "offset", 5, "rows", 5, "group.offset", 5, "group.limit", -1, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "offset", 5, "rows", 5, "sort", i1 + " asc, id asc", "group.format", "simple");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "offset", 5, "rows", 5, "sort", i1 + " asc, id asc", "group.main", "true");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.offset", 5, "group.limit", 5, "sort", i1 + " asc, id asc", "group.format", "simple", "offset", 5, "rows", 5);
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.offset", 5, "group.limit", 5, "sort", i1 + " asc, id asc", "group.main", "true", "offset", 5, "rows", 5);
-
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", -1, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", 10, "sort", i1 + " asc, id asc");
-
-    query("q", "*:*", "fl", "id," + i1dv, "group", "true", "group.field", i1dv, "group.limit", 10, "sort", i1 + " asc, id asc");
-
-    
-    // SOLR-4150: what if group.query has no matches, 
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        0,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        "id asc, _docid_ asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        "{!func}add(" + i1 + ",5) asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "facet",
+        "true",
+        "facet.field",
+        t1);
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "stats",
+        "true",
+        "stats.field",
+        tlong);
+    query(
+        "q",
+        "kings",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "spellcheck",
+        "true",
+        "spellcheck.build",
+        "true",
+        "qt",
+        "spellCheckCompRH",
+        "df",
+        "subject");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "facet",
+        "true",
+        "hl",
+        "true",
+        "hl.fl",
+        t1);
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "group.sort",
+        "id desc");
+
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.offset",
+        5,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "offset",
+        5,
+        "rows",
+        5,
+        "group.offset",
+        5,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "offset",
+        5,
+        "rows",
+        5,
+        "sort",
+        i1 + " asc, id asc",
+        "group.format",
+        "simple");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "offset",
+        5,
+        "rows",
+        5,
+        "sort",
+        i1 + " asc, id asc",
+        "group.main",
+        "true");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.offset",
+        5,
+        "group.limit",
+        5,
+        "sort",
+        i1 + " asc, id asc",
+        "group.format",
+        "simple",
+        "offset",
+        5,
+        "rows",
+        5);
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.offset",
+        5,
+        "group.limit",
+        5,
+        "sort",
+        i1 + " asc, id asc",
+        "group.main",
+        "true",
+        "offset",
+        5,
+        "rows",
+        5);
+
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc");
+
+    query(
+        "q",
+        "*:*",
+        "fl",
+        "id," + i1dv,
+        "group",
+        "true",
+        "group.field",
+        i1dv,
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc");
+
+    // SOLR-4150: what if group.query has no matches,
     // or only matches on one shard
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true",
-          "group.query", t1 + ":kings OR " + t1 + ":eggs",
-          "group.query", "id:5", // single doc, so only one shard will have it
-          "group.limit", -1, "sort", i1 + " asc, id asc");
-    query("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true",
-          "group.query", t1 + ":kings OR " + t1 + ":eggs",
-          "group.query", t1 + ":this_will_never_match",
-          "group.limit", 10, "sort", i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.query",
+        "id:5", // single doc, so only one shard will have it
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.query",
+        t1 + ":this_will_never_match",
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc");
 
     // SOLR-4164: main query matches nothing, or only matches on one shard
-    query("q", "bogus_s:nothing", // no docs match
-          "group", "true", 
-          "group.query", t1 + ":this_will_never_match",
-          "group.field", i1, 
-          "fl", "id", "group.limit", "2", "group.format", "simple");
-    query("q", "id:5", // one doc matches, so only one shard
-          "rows", 100, "fl", "id," + i1, "group", "true", 
-          "group.query", t1 + ":kings OR " + t1 + ":eggs", 
-          "group.field", i1,
-          "group.limit", 10, "sort", i1 + " asc, id asc");
+    query(
+        "q",
+        "bogus_s:nothing", // no docs match
+        "group",
+        "true",
+        "group.query",
+        t1 + ":this_will_never_match",
+        "group.field",
+        i1,
+        "fl",
+        "id",
+        "group.limit",
+        "2",
+        "group.format",
+        "simple");
+    query(
+        "q",
+        "id:5", // one doc matches, so only one shard
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.field",
+        i1,
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc");
 
     // SOLR-13404
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs",
-        "fl", "id", "group.format", "grouped", "group.limit", "2", "group.offset", "2",
-        "sort", i1 + " asc, id asc");
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs",
-        "fl", "id", "group.format", "grouped", "group.limit", "-12",
-        "sort", i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "fl",
+        "id",
+        "group.format",
+        "grouped",
+        "group.limit",
+        "2",
+        "group.offset",
+        "2",
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "fl",
+        "id",
+        "group.format",
+        "grouped",
+        "group.limit",
+        "-12",
+        "sort",
+        i1 + " asc, id asc");
 
     ignoreException("'group.offset' parameter cannot be negative");
-    SolrException exception = expectThrows(SolrException.class, () -> query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.offset", "-1")
-    );
+    SolrException exception =
+        expectThrows(
+            SolrException.class,
+            () ->
+                query(
+                    "q",
+                    "*:*",
+                    "group",
+                    "true",
+                    "group.query",
+                    t1 + ":kings OR " + t1 + ":eggs",
+                    "group.offset",
+                    "-1"));
     assertEquals(SolrException.ErrorCode.BAD_REQUEST.code, exception.code());
-    assertThat(exception.getMessage(), containsString("'group.offset' parameter cannot be negative"));
+    assertThat(
+        exception.getMessage(), containsString("'group.offset' parameter cannot be negative"));
     resetExceptionIgnores();
 
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", "3",
-        "fl", "id", "group.format", "simple", "sort", i1 + " asc, id asc");
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs",
-        "fl", "id", "group.main", "true", "sort", i1 + " asc, id asc");
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs", "rows", "13", "start", "2",
-        "fl", "id", "group.main", "true", "sort", i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.limit",
+        "3",
+        "fl",
+        "id",
+        "group.format",
+        "simple",
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "fl",
+        "id",
+        "group.main",
+        "true",
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "rows",
+        "13",
+        "start",
+        "2",
+        "fl",
+        "id",
+        "group.main",
+        "true",
+        "sort",
+        i1 + " asc, id asc");
 
     // SOLR-9802
-    query("q", "*:*", "group", "true", "group.field", tdate_a, "sort", i1 + " asc, id asc", "fl", "id");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.field",
+        tdate_a,
+        "sort",
+        i1 + " asc, id asc",
+        "fl",
+        "id");
 
     // SOLR-3109
-    query("q", t1 + ":eggs", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 10, "sort", tlong + " asc, id asc");
-    query("q", i1 + ":232", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 10, "sort", tlong + " asc, id asc");
+    query(
+        "q",
+        t1 + ":eggs",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        10,
+        "sort",
+        tlong + " asc, id asc");
+    query(
+        "q",
+        i1 + ":232",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        10,
+        "sort",
+        tlong + " asc, id asc");
 
     // SOLR-12248
-    query("q", "*:*", "rows", 100, "fl", "id," + s1dv, "group", "true", "group.field", s1dv, "group.limit", -1, "sort", b1dv + " asc, id asc", "group.sort", "id desc");
-    query("q", "*:*", "fl", "id," + b1dv, "group", "true", "group.field", b1dv, "group.limit", 10, "sort", s1dv + " asc, id asc");
-    query("q", s1dv + ":dent", "fl", "id," + b1dv, "group", "true", "group.field", b1dv, "group.limit", 10, "sort", i1 + " asc, id asc");
-
-    // In order to validate this we need to make sure that during indexing that all documents of one group only occur on the same shard
-    query("q", "*:*", "fq", s1 + ":a", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 10, "sort", i1 + " asc, id asc", "group.ngroups", "true");
-    query("q", "*:*", "fq", s1 + ":a", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 10, "sort", i1 + " asc, id asc", "group.truncate", "true");
-    query("q", "*:*", "fq", s1 + ":a", "rows", 100, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", 10, "sort", i1 + " asc, id asc", "group.truncate", "true", "facet", "true", "facet.field", t1);
-    for (String gfacet : new String[] { "true", "false" }) {
-      for (String flimit : new String[] { "-100","-1", "1", "2", "10000" }) {
-        for (String foffset : new String[] { "0","1", "2", "1000" }) {
-          query("q", "*:*", "fq", s1+":a", 
-                "rows", 100, "fl", "id,"+i1, "sort", i1+" asc, id asc", 
-                "group", "true", "group.field", i1, "group.limit", 10, 
-                "facet", "true", "facet.field", t1, "group.facet", gfacet, 
-                "facet.limit", flimit, "facet.offset", foffset);
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + s1dv,
+        "group",
+        "true",
+        "group.field",
+        s1dv,
+        "group.limit",
+        -1,
+        "sort",
+        b1dv + " asc, id asc",
+        "group.sort",
+        "id desc");
+    query(
+        "q",
+        "*:*",
+        "fl",
+        "id," + b1dv,
+        "group",
+        "true",
+        "group.field",
+        b1dv,
+        "group.limit",
+        10,
+        "sort",
+        s1dv + " asc, id asc");
+    query(
+        "q",
+        s1dv + ":dent",
+        "fl",
+        "id," + b1dv,
+        "group",
+        "true",
+        "group.field",
+        b1dv,
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc");
+
+    // In order to validate this we need to make sure that during indexing that all documents of one
+    // group only occur on the same shard
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc",
+        "group.ngroups",
+        "true");
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc",
+        "group.truncate",
+        "true");
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        10,
+        "sort",
+        i1 + " asc, id asc",
+        "group.truncate",
+        "true",
+        "facet",
+        "true",
+        "facet.field",
+        t1);
+    for (String gfacet : new String[] {"true", "false"}) {
+      for (String flimit : new String[] {"-100", "-1", "1", "2", "10000"}) {
+        for (String foffset : new String[] {"0", "1", "2", "1000"}) {
+          query(
+              "q",
+              "*:*",
+              "fq",
+              s1 + ":a",
+              "rows",
+              100,
+              "fl",
+              "id," + i1,
+              "sort",
+              i1 + " asc, id asc",
+              "group",
+              "true",
+              "group.field",
+              i1,
+              "group.limit",
+              10,
+              "facet",
+              "true",
+              "facet.field",
+              t1,
+              "group.facet",
+              gfacet,
+              "facet.limit",
+              flimit,
+              "facet.offset",
+              foffset);
         }
       }
     }
 
     // SOLR-3316
-    query("q", "*:*", "fq", s1 + ":a", "rows", 0, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "facet", "true", "facet.field", t1);
-    query("q", "*:*", "fq", s1 + ":a", "rows", 0, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc", "group.truncate", "true", "facet", "true", "facet.field", t1);
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        0,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "facet",
+        "true",
+        "facet.field",
+        t1);
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        0,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc",
+        "group.truncate",
+        "true",
+        "facet",
+        "true",
+        "facet.field",
+        t1);
 
     // SOLR-3436
-    query("q", "*:*", "fq", s1 + ":a", "fl", "id," + i1, "group", "true", "group.field", i1, "sort", i1 + " asc, id asc", "group.ngroups", "true");
-    query("q", "*:*", "fq", s1 + ":a", "rows", 0, "fl", "id," + i1, "group", "true", "group.field", i1, "sort", i1 + " asc, id asc", "group.ngroups", "true");
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "sort",
+        i1 + " asc, id asc",
+        "group.ngroups",
+        "true");
+    query(
+        "q",
+        "*:*",
+        "fq",
+        s1 + ":a",
+        "rows",
+        0,
+        "fl",
+        "id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "sort",
+        i1 + " asc, id asc",
+        "group.ngroups",
+        "true");
 
     // SOLR-15273: if id was renamed we need to use the new name
-    query("q", "*:*", "rows", 100, "fl", "aliasId:id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "aliasId:id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " asc, id asc");
 
     // SOLR-3960 - include a postfilter
-    for (String facet : new String[] { "false", "true"}) {
-      for (String fcache : new String[] { "", " cache=false cost=200"}) {
-      query("q", "*:*", "rows", 100, "fl", "id," + i1, 
-            "group.limit", 10, "sort", i1 + " asc, id asc",
-            "group", "true", "group.field", i1, 
-            "fq", "{!frange l=50 "+fcache+"}"+tlong,
-            "facet.field", t1,
-            "facet", facet
-            );
+    for (String facet : new String[] {"false", "true"}) {
+      for (String fcache : new String[] {"", " cache=false cost=200"}) {
+        query(
+            "q",
+            "*:*",
+            "rows",
+            100,
+            "fl",
+            "id," + i1,
+            "group.limit",
+            10,
+            "sort",
+            i1 + " asc, id asc",
+            "group",
+            "true",
+            "group.field",
+            i1,
+            "fq",
+            "{!frange l=50 " + fcache + "}" + tlong,
+            "facet.field",
+            t1,
+            "facet",
+            facet);
       }
     }
 
     // SOLR-6156: timeAllowed with rows>0 and rows==0
-    for (String ngroups : new String[] { "false", "true" }) {
-      for (String rows : new String[] { "10", "0" }) {
-        simpleQuery("q", "*:*", "group", "true", "group.field", i1, "group.ngroups", ngroups, "rows", rows);
-        simpleQuery("q", "*:*", "group", "true", "group.field", i1, "group.ngroups", ngroups, "rows", rows, "timeAllowed", "123456");
+    for (String ngroups : new String[] {"false", "true"}) {
+      for (String rows : new String[] {"10", "0"}) {
+        simpleQuery(
+            "q", "*:*", "group", "true", "group.field", i1, "group.ngroups", ngroups, "rows", rows);
+        simpleQuery(
+            "q",
+            "*:*",
+            "group",
+            "true",
+            "group.field",
+            i1,
+            "group.ngroups",
+            ngroups,
+            "rows",
+            rows,
+            "timeAllowed",
+            "123456");
       }
     }
 
     ModifiableSolrParams params = new ModifiableSolrParams();
-    Object[] q =  {"q", "*:*", "fq", s1 + ":a", "rows", 1, "fl", "id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "group.ngroups", "true"};
+    Object[] q = {
+      "q",
+      "*:*",
+      "fq",
+      s1 + ":a",
+      "rows",
+      1,
+      "fl",
+      "id," + i1,
+      "group",
+      "true",
+      "group.field",
+      i1,
+      "group.limit",
+      -1,
+      "group.ngroups",
+      "true"
+    };
 
     for (int i = 0; i < q.length; i += 2) {
       params.add(q[i].toString(), q[i + 1].toString());
@@ -328,131 +1307,351 @@ public class TestDistributedGrouping extends BaseDistributedSearchTestCase {
     assertEquals(100 * shardsArr.length, matches);
     assertEquals(shardsArr.length, groupCount);
 
-
     // We validate distributed grouping with scoring as first sort.
-    // note: this 'q' matches all docs and returns the 'id' as the score, which is unique and so our results should be deterministic.
-    handle.put("maxScore", SKIP);// TODO see SOLR-6612
-    query("q", "{!func}id_i1", "rows", 100, "fl", "score,id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", i1 + " desc", "group.sort", "score desc"); // SOLR-2955
-    query("q", "{!func}id_i1", "rows", 100, "fl", "score,id," + i1, "group", "true", "group.field", i1, "group.limit", -1, "sort", "score desc, _docid_ asc, id asc");
-    query("q", "{!func}id_i1", "rows", 100, "fl", "score,id," + i1, "group", "true", "group.field", i1, "group.limit", -1);
-
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", "3",
-        "fl", "id,score", "sort", i1 + " asc, id asc");
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", "3",
-        "fl", "id,score", "group.format", "simple", "sort", i1 + " asc, id asc");
-    query("q", "*:*",
-        "group", "true",
-        "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", "3",
-        "fl", "id,score", "group.main", "true", "sort", i1 + " asc, id asc");
-
-    // grouping shouldn't care if there are multiple fl params, or what order the fl field names are in
-    variantQuery(params("q", "*:*",
-                        "group", "true", "group.field", i1dv, "group.limit", "10",
-                        "sort", i1 + " asc, id asc")
-                 , params("fl", "id," + i1dv)
-                 , params("fl", i1dv + ",id")
-                 , params("fl", "id", "fl", i1dv)
-                 , params("fl", i1dv, "fl", "id")
-                 );
-    variantQuery(params("q", "*:*", "rows", "100",
-                        "group", "true", "group.field", s1dv, "group.limit", "-1", 
-                        "sort", b1dv + " asc, id asc",
-                        "group.sort", "id desc")
-                 , params("fl", "id," + s1dv + "," + tdate_a)
-                 , params("fl", "id", "fl", s1dv, "fl", tdate_a)
-                 , params("fl", tdate_a, "fl", s1dv, "fl", "id")
-                 );
-    variantQuery(params("q", "*:*", "rows", "100",
-                        "group", "true", "group.field", s1dv, "group.limit", "-1", 
-                        "sort", b1dv + " asc, id asc",
-                        "group.sort", "id desc")
-                 , params("fl", s1dv + "," + tdate_a)
-                 , params("fl", s1dv, "fl", tdate_a)
-                 , params("fl", tdate_a, "fl", s1dv)
-                 );
-    variantQuery(params("q", "{!func}id_i1", "rows", "100",
-                        "group", "true", "group.field", i1, "group.limit", "-1",
-                        "sort", tlong+" asc, id desc")
-                 , params("fl", t1 + ",score," + i1dv)
-                 , params("fl", t1, "fl", "score", "fl", i1dv)
-                 , params("fl", "score", "fl", t1, "fl", i1dv)
-                 );
-                             
+    // note: this 'q' matches all docs and returns the 'id' as the score, which is unique and so our
+    // results should be deterministic.
+    handle.put("maxScore", SKIP); // TODO see SOLR-6612
+    query(
+        "q",
+        "{!func}id_i1",
+        "rows",
+        100,
+        "fl",
+        "score,id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        i1 + " desc",
+        "group.sort",
+        "score desc"); // SOLR-2955
+    query(
+        "q",
+        "{!func}id_i1",
+        "rows",
+        100,
+        "fl",
+        "score,id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        "score desc, _docid_ asc, id asc");
+    query(
+        "q",
+        "{!func}id_i1",
+        "rows",
+        100,
+        "fl",
+        "score,id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1);
+
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.limit",
+        "3",
+        "fl",
+        "id,score",
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.limit",
+        "3",
+        "fl",
+        "id,score",
+        "group.format",
+        "simple",
+        "sort",
+        i1 + " asc, id asc");
+    query(
+        "q",
+        "*:*",
+        "group",
+        "true",
+        "group.query",
+        t1 + ":kings OR " + t1 + ":eggs",
+        "group.limit",
+        "3",
+        "fl",
+        "id,score",
+        "group.main",
+        "true",
+        "sort",
+        i1 + " asc, id asc");
+
+    // grouping shouldn't care if there are multiple fl params, or what order the fl field names are
+    // in
+    variantQuery(
+        params(
+            "q",
+            "*:*",
+            "group",
+            "true",
+            "group.field",
+            i1dv,
+            "group.limit",
+            "10",
+            "sort",
+            i1 + " asc, id asc"),
+        params("fl", "id," + i1dv),
+        params("fl", i1dv + ",id"),
+        params("fl", "id", "fl", i1dv),
+        params("fl", i1dv, "fl", "id"));
+    variantQuery(
+        params(
+            "q",
+            "*:*",
+            "rows",
+            "100",
+            "group",
+            "true",
+            "group.field",
+            s1dv,
+            "group.limit",
+            "-1",
+            "sort",
+            b1dv + " asc, id asc",
+            "group.sort",
+            "id desc"),
+        params("fl", "id," + s1dv + "," + tdate_a),
+        params("fl", "id", "fl", s1dv, "fl", tdate_a),
+        params("fl", tdate_a, "fl", s1dv, "fl", "id"));
+    variantQuery(
+        params(
+            "q",
+            "*:*",
+            "rows",
+            "100",
+            "group",
+            "true",
+            "group.field",
+            s1dv,
+            "group.limit",
+            "-1",
+            "sort",
+            b1dv + " asc, id asc",
+            "group.sort",
+            "id desc"),
+        params("fl", s1dv + "," + tdate_a),
+        params("fl", s1dv, "fl", tdate_a),
+        params("fl", tdate_a, "fl", s1dv));
+    variantQuery(
+        params(
+            "q",
+            "{!func}id_i1",
+            "rows",
+            "100",
+            "group",
+            "true",
+            "group.field",
+            i1,
+            "group.limit",
+            "-1",
+            "sort",
+            tlong + " asc, id desc"),
+        params("fl", t1 + ",score," + i1dv),
+        params("fl", t1, "fl", "score", "fl", i1dv),
+        params("fl", "score", "fl", t1, "fl", i1dv));
+
     // some explicit checks of non default sorting, and sort/group.sort with diff clauses
-    query("q", "{!func}id_i1", "rows", 100, "fl", tlong + ",id," + i1, "group", "true",
-          "group.field", i1, "group.limit", -1,
-          "sort", tlong+" asc, id desc");
-    query("q", "{!func}id_i1", "rows", 100, "fl", tlong + ",id," + i1, "group", "true",
-          "group.field", i1, "group.limit", -1,
-          "sort", "id asc",
-          "group.sort", tlong+" asc, id desc");
-    query("q", "{!func}id_i1", "rows", 100, "fl", tlong + ",id," + i1, "group", "true",
-          "group.field", i1, "group.limit", -1,
-          "sort", tlong+" asc, id desc",
-          "group.sort", "id asc");
+    query(
+        "q",
+        "{!func}id_i1",
+        "rows",
+        100,
+        "fl",
+        tlong + ",id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        tlong + " asc, id desc");
+    query(
+        "q",
+        "{!func}id_i1",
+        "rows",
+        100,
+        "fl",
+        tlong + ",id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        "id asc",
+        "group.sort",
+        tlong + " asc, id desc");
+    query(
+        "q",
+        "{!func}id_i1",
+        "rows",
+        100,
+        "fl",
+        tlong + ",id," + i1,
+        "group",
+        "true",
+        "group.field",
+        i1,
+        "group.limit",
+        -1,
+        "sort",
+        tlong + " asc, id desc",
+        "group.sort",
+        "id asc");
     for (boolean withFL : new boolean[] {true, false}) {
       if (withFL) {
-        rsp = variantQuery(params("q", "{!func}id_i1", "fq", oddField+":[* TO *]",
-                                  "rows", "100",
-                                  "group", "true", "group.field", i1, "group.limit", "-1",
-                                  "sort", tlong+" asc", "group.sort", oddField+" asc")
-                           , params("fl", tlong + ",id," + i1)
-                           , params("fl", tlong, "fl", "id", "fl", i1)
-                           , params("fl", "id", "fl", i1, "fl", tlong)
-                           );
+        rsp =
+            variantQuery(
+                params(
+                    "q",
+                    "{!func}id_i1",
+                    "fq",
+                    oddField + ":[* TO *]",
+                    "rows",
+                    "100",
+                    "group",
+                    "true",
+                    "group.field",
+                    i1,
+                    "group.limit",
+                    "-1",
+                    "sort",
+                    tlong + " asc",
+                    "group.sort",
+                    oddField + " asc"),
+                params("fl", tlong + ",id," + i1),
+                params("fl", tlong, "fl", "id", "fl", i1),
+                params("fl", "id", "fl", i1, "fl", tlong));
       } else {
         // special check: same query, but empty fl...
-        rsp = query("q", "{!func}id_i1", "fq", oddField+":[* TO *]",
-                    "rows", "100",
-                    "group", "true", "group.field", i1, "group.limit", "-1",
-                    "sort", tlong+" asc", "group.sort", oddField+" asc");
+        rsp =
+            query(
+                "q",
+                "{!func}id_i1",
+                "fq",
+                oddField + ":[* TO *]",
+                "rows",
+                "100",
+                "group",
+                "true",
+                "group.field",
+                i1,
+                "group.limit",
+                "-1",
+                "sort",
+                tlong + " asc",
+                "group.sort",
+                oddField + " asc");
       }
       nl = (NamedList<?>) rsp.getResponse().get("grouped");
       nl = (NamedList<?>) nl.get(i1);
       assertEquals(rsp.toString(), 6, nl.get("matches"));
-      assertEquals(rsp.toString(), 2, ((List<NamedList<?>>)nl.get("groups")).size());
-      nl = ((List<NamedList<?>>)nl.get("groups")).get(0);
+      assertEquals(rsp.toString(), 2, ((List<NamedList<?>>) nl.get("groups")).size());
+      nl = ((List<NamedList<?>>) nl.get("groups")).get(0);
       assertEquals(rsp.toString(), 232, nl.get("groupValue"));
       SolrDocumentList docs = (SolrDocumentList) nl.get("doclist");
       assertEquals(docs.toString(), 5, docs.getNumFound());
       //
       assertEquals(docs.toString(), "22", docs.get(0).getFirstValue("id"));
       assertEquals(docs.toString(), 732L, docs.get(0).getFirstValue(tlong));
-      assertEquals(docs.toString(), 232,  docs.get(0).getFirstValue(i1));
+      assertEquals(docs.toString(), 232, docs.get(0).getFirstValue(i1));
       //
       assertEquals(docs.toString(), "21", docs.get(4).getFirstValue("id"));
       assertEquals(docs.toString(), 632L, docs.get(4).getFirstValue(tlong));
-      assertEquals(docs.toString(), 232,  docs.get(4).getFirstValue(i1));
+      assertEquals(docs.toString(), 232, docs.get(4).getFirstValue(i1));
       //
       if (withFL == false) {
-        // exact number varies based on test randomization, but there should always be at least the 8
-        // explicitly indexed in these 2 docs...
+        // exact number varies based on test randomization, but there should always be at least the
+        // 8 explicitly indexed in these 2 docs...
         assertTrue(docs.toString(), 8 <= docs.get(0).getFieldNames().size());
         assertTrue(docs.toString(), 8 <= docs.get(4).getFieldNames().size());
       }
     }
-    
+
     // grouping on boolean non-stored docValued enabled field
-    rsp = query("q", b1dv + ":*", "fl", "id," + b1dv, "group", "true", "group.field",
-        b1dv, "group.limit", 10, "sort", b1dv + " asc, id asc");
+    rsp =
+        query(
+            "q",
+            b1dv + ":*",
+            "fl",
+            "id," + b1dv,
+            "group",
+            "true",
+            "group.field",
+            b1dv,
+            "group.limit",
+            10,
+            "sort",
+            b1dv + " asc, id asc");
     nl = (NamedList<?>) rsp.getResponse().get("grouped");
     nl = (NamedList<?>) nl.get(b1dv);
     assertEquals(rsp.toString(), 9, nl.get("matches"));
-    assertEquals(rsp.toString(), 2, ((List<NamedList<?>>)nl.get("groups")).size());
-    nl = ((List<NamedList<?>>)nl.get("groups")).get(0);
+    assertEquals(rsp.toString(), 2, ((List<NamedList<?>>) nl.get("groups")).size());
+    nl = ((List<NamedList<?>>) nl.get("groups")).get(0);
     assertEquals(rsp.toString(), false, nl.get("groupValue"));
     SolrDocumentList docs = (SolrDocumentList) nl.get("doclist");
     assertEquals(docs.toString(), 4, docs.getNumFound());
-    
+
     // Can't validate the response, but can check if no errors occur.
-    simpleQuery("q", "*:*", "rows", 100, "fl", "id," + i1, "group", "true", "group.query", t1 + ":kings OR " + t1 + ":eggs", "group.limit", 10, "sort", i1 + " asc, id asc", CommonParams.TIME_ALLOWED, 1);
-    
-    //Debug
-    simpleQuery("q", "*:*", "rows", 10, "fl", "id," + i1, "group", "true", "group.field", i1, "debug", "true");
+    simpleQuery(
+        "q",
+        "*:*",
+        "rows",
+        100,
+        "fl",
+        "id," + i1,
+        "group",
... 322353 lines suppressed ...