You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by md...@apache.org on 2021/06/28 19:06:55 UTC

[solr] branch main updated: SOLR-15385 RawTypes Part IV, solr-core (#195)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 5e7310c  SOLR-15385 RawTypes Part IV, solr-core (#195)
5e7310c is described below

commit 5e7310c344b4d31903acda93c7638bce125b63cf
Author: Mike Drob <md...@apache.org>
AuthorDate: Mon Jun 28 12:06:47 2021 -0700

    SOLR-15385 RawTypes Part IV, solr-core (#195)
---
 ...istributedCollectionConfigSetCommandRunner.java |  4 +-
 .../OverseerCollectionMessageHandler.java          |  4 +-
 .../org/apache/solr/core/QuerySenderListener.java  | 10 +--
 .../apache/solr/handler/DumpRequestHandler.java    |  4 +-
 .../solr/handler/IncrementalShardBackup.java       |  6 +-
 .../java/org/apache/solr/handler/SnapShooter.java  | 11 ++--
 .../solr/handler/admin/AdminHandlersProxy.java     |  3 +-
 .../apache/solr/handler/admin/BackupCoreOp.java    |  3 +-
 .../solr/handler/admin/ConfigSetsHandler.java      |  4 +-
 .../solr/handler/admin/ContainerPluginsApi.java    |  2 +-
 .../apache/solr/handler/admin/LoggingHandler.java  |  4 +-
 .../solr/handler/admin/ZookeeperStatusHandler.java |  3 +-
 .../solr/handler/component/DebugComponent.java     |  2 +-
 .../solr/handler/component/ExpandComponent.java    | 15 ++---
 .../handler/component/IterativeMergeStrategy.java  |  3 +-
 .../solr/handler/component/PivotFacetField.java    |  2 +-
 .../solr/handler/component/SearchHandler.java      |  5 +-
 .../solr/handler/component/TermsComponent.java     |  3 +-
 .../solr/highlight/DefaultSolrHighlighter.java     |  7 +-
 .../solr/legacy/LegacyNumericRangeQuery.java       |  3 +-
 .../java/org/apache/solr/logging/LogWatcher.java   |  8 +--
 .../org/apache/solr/metrics/SolrMetricManager.java |  7 +-
 .../solr/request/json/JsonQueryConverter.java      |  3 +-
 .../apache/solr/response/CSVResponseWriter.java    | 14 ++--
 .../solr/response/GeoJSONResponseWriter.java       |  5 +-
 .../solr/response/PHPSerializedResponseWriter.java |  4 +-
 .../apache/solr/response/SolrQueryResponse.java    |  3 +-
 .../response/transform/GeoTransformerFactory.java  |  3 +-
 .../transform/RawValueTransformerFactory.java      |  3 +-
 .../org/apache/solr/rest/BaseSolrResource.java     |  3 +-
 .../java/org/apache/solr/schema/IndexSchema.java   |  3 +-
 .../java/org/apache/solr/search/QueryParsing.java  |  3 +-
 .../solr/search/SignificantTermsQParserPlugin.java | 20 ++----
 .../TextLogisticRegressionQParserPlugin.java       |  3 +-
 .../FacetFieldProcessorByEnumTermsStream.java      |  3 +-
 .../apache/solr/search/facet/FacetRangeParser.java |  3 +-
 .../solr/search/facet/FacetRangeProcessor.java     |  3 +-
 .../org/apache/solr/search/facet/LegacyFacet.java  |  3 +-
 .../apache/solr/search/facet/UniqueSlotAcc.java    |  8 +--
 .../distance/GeoDistValueSourceParser.java         |  3 +-
 .../apache/solr/search/mlt/CloudMLTQParser.java    | 12 ++--
 .../apache/solr/search/mlt/SimpleMLTQParser.java   |  3 +-
 .../apache/solr/security/AuditLoggerPlugin.java    |  5 +-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |  6 +-
 .../java/org/apache/solr/update/CommitTracker.java |  3 +-
 .../org/apache/solr/update/DocumentBuilder.java    |  3 +-
 .../src/java/org/apache/solr/update/PeerSync.java  |  6 +-
 .../processor/AtomicUpdateDocumentMerger.java      |  5 +-
 .../src/java/org/apache/solr/util/RTimerTree.java  |  3 +-
 .../src/test/org/apache/hadoop/fs/FileUtil.java    |  6 +-
 .../org/apache/solr/TestSolrCoreProperties.java    |  3 +-
 .../TestEmbeddedSolrServerAdminHandler.java        |  3 +-
 .../DistribDocExpirationUpdateProcessorTest.java   |  3 +-
 .../solr/cloud/DistributedApiAsyncTrackerTest.java |  9 +--
 .../solr/cloud/DistributedVersionInfoTest.java     |  3 +-
 .../solr/cloud/LeaderVoteWaitTimeoutTest.java      |  6 +-
 .../apache/solr/cloud/ReplicationFactorTest.java   |  5 +-
 .../solr/cloud/SystemCollectionCompatTest.java     |  3 +-
 .../apache/solr/cloud/TestCloudConsistency.java    |  6 +-
 .../TestSolrCloudWithSecureImpersonation.java      |  9 +--
 .../solr/cloud/TestStressInPlaceUpdates.java       |  6 +-
 .../TestRequestStatusCollectionAPI.java            |  8 +--
 .../apache/solr/core/MockShardHandlerFactory.java  |  3 +-
 .../apache/solr/core/TestShardHandlerFactory.java  |  3 +-
 .../core/snapshots/TestSolrCloudSnapshots.java     | 13 ++--
 .../solr/core/snapshots/TestSolrCoreSnapshots.java | 10 ++-
 .../apache/solr/handler/BackupStatusChecker.java   |  6 +-
 .../solr/handler/TestReplicationHandler.java       |  5 +-
 .../org/apache/solr/handler/V2StandaloneTest.java  |  8 +--
 .../handler/admin/CoreAdminCreateDiscoverTest.java |  6 +-
 .../solr/handler/admin/CoreAdminHandlerTest.java   |  5 +-
 .../solr/handler/admin/MBeansHandlerTest.java      |  5 +-
 .../solr/handler/admin/MetricsHandlerTest.java     | 74 ++++++++++------------
 .../solr/handler/admin/StatsReloadRaceTest.java    |  9 +--
 .../handler/component/SpellCheckComponentTest.java | 22 +++----
 .../handler/designer/TestSchemaDesignerAPI.java    |  3 +-
 .../apache/solr/handler/tagger/TaggerTestCase.java |  6 +-
 .../apache/solr/highlight/DummyHighlighter.java    |  3 +-
 .../org/apache/solr/logging/TestLogWatcher.java    |  3 +-
 .../metrics/reporters/SolrSlf4jReporterTest.java   |  3 +-
 .../org/apache/solr/response/JSONWriterTest.java   |  4 +-
 .../org/apache/solr/response/SmileWriterTest.java  |  3 +-
 .../solr/schema/SpatialRPTFieldTypeTest.java       |  6 +-
 .../apache/solr/schema/TestCloudManagedSchema.java |  9 +--
 .../org/apache/solr/schema/TestManagedSchema.java  |  9 +--
 .../search/facet/SpatialHeatmapFacetsTest.java     | 19 ++----
 .../search/facet/TestCloudJSONFacetSKGEquiv.java   | 16 ++---
 .../test/org/apache/solr/update/PeerSyncTest.java  |  3 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java     |  4 +-
 .../test/org/apache/solr/update/UpdateLogTest.java |  3 +-
 .../IgnoreLargeDocumentProcessorFactoryTest.java   |  5 +-
 .../test/org/apache/solr/util/TestRTimerTree.java  |  9 +--
 .../org/apache/solr/common/util/NamedList.java     |  5 +-
 93 files changed, 224 insertions(+), 377 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/DistributedCollectionConfigSetCommandRunner.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/DistributedCollectionConfigSetCommandRunner.java
index bc420cc..b206b78 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/DistributedCollectionConfigSetCommandRunner.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/DistributedCollectionConfigSetCommandRunner.java
@@ -331,7 +331,6 @@ public class DistributedCollectionConfigSetCommandRunner {
      * (initiated before this method got called) on all execution paths out of this method!
      */
     @Override
-    @SuppressWarnings("unchecked")
     public OverseerSolrResponse call() {
       final String collName = getCollectionName(message);
       final String shardId = message.getStr(SHARD_ID_PROP);
@@ -341,8 +340,7 @@ public class DistributedCollectionConfigSetCommandRunner {
       MDCLoggingContext.setShard(shardId);
       MDCLoggingContext.setReplica(replicaName);
 
-      @SuppressWarnings({"rawtypes"})
-      NamedList results = new NamedList();
+      NamedList<Object> results = new NamedList<>();
       try {
         // Create API lock for executing the command. This call is non blocking (not blocked on waiting for a lock to be acquired anyway,
         // might be blocked on access to ZK etc)
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
index 44c8f3d..3b02bc2 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
@@ -101,15 +101,13 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
   }
 
   @Override
-  @SuppressWarnings("unchecked")
   public OverseerSolrResponse processMessage(ZkNodeProps message, String operation) {
     MDCLoggingContext.setCollection(message.getStr(COLLECTION));
     MDCLoggingContext.setShard(message.getStr(SHARD_ID_PROP));
     MDCLoggingContext.setReplica(message.getStr(REPLICA_PROP));
     log.debug("OverseerCollectionMessageHandler.processMessage : {} , {}", operation, message);
 
-    @SuppressWarnings({"rawtypes"})
-    NamedList results = new NamedList();
+    NamedList<Object> results = new NamedList<>();
     try {
       CollectionAction action = getCollectionAction(operation);
       CollApiCmds.CollectionApiCommand command = commandMapper.getActionCommand(action);
diff --git a/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java b/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
index 2e8fa9e..a37cd44 100644
--- a/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
+++ b/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
@@ -45,16 +45,16 @@ public class QuerySenderListener extends AbstractSolrEventListener {
   }
 
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void newSearcher(SolrIndexSearcher newSearcher, SolrIndexSearcher currentSearcher) {
     final SolrIndexSearcher searcher = newSearcher;
     log.debug("QuerySenderListener sending requests to {}", newSearcher);
-    List<NamedList> allLists = (List<NamedList>)getArgs().get("queries");
+    @SuppressWarnings("unchecked")
+    List<NamedList<Object>> allLists = (List<NamedList<Object>>)getArgs().get("queries");
     if (allLists == null) return;
-    for (NamedList nlst : allLists) {
+    for (NamedList<Object> nlst : allLists) {
       try {
         // bind the request to a particular searcher (the newSearcher)
-        NamedList params = addEventParms(currentSearcher, nlst);
+        NamedList<Object> params = addEventParms(currentSearcher, nlst);
         // for this, we default to distrib = false
         if (params.get(DISTRIB) == null) {
           params.add(DISTRIB, false);
@@ -71,7 +71,7 @@ public class QuerySenderListener extends AbstractSolrEventListener {
           // Retrieve the Document instances (not just the ids) to warm
           // the OS disk cache, and any Solr document cache.  Only the top
           // level values in the NamedList are checked for DocLists.
-          NamedList values = rsp.getValues();
+          NamedList<?> values = rsp.getValues();
           for (int i=0; i<values.size(); i++) {
             Object o = values.getVal(i);
             if (o instanceof ResultContext) {
diff --git a/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
index 5ef0b29..bde89d8 100644
--- a/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
@@ -53,8 +53,8 @@ public class DumpRequestHandler extends RequestHandlerBase
 
     String[] returnParams = req.getParams().getParams("param");
     if(returnParams !=null) {
-      @SuppressWarnings({"rawtypes"})
-      NamedList params = (NamedList) rsp.getValues().get("params");
+      @SuppressWarnings({"unchecked"})
+      NamedList<Object> params = (NamedList<Object>) rsp.getValues().get("params");
       for (String returnParam : returnParams) {
         String[] vals = req.getParams().getParams(returnParam);
         if(vals != null){
diff --git a/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java b/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java
index 49ce053..b9e80fa 100644
--- a/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java
+++ b/solr/core/src/java/org/apache/solr/handler/IncrementalShardBackup.java
@@ -76,8 +76,7 @@ public class IncrementalShardBackup {
         this.commitNameOption = commitNameOption;
     }
 
-    @SuppressWarnings({"rawtypes"})
-    public NamedList backup() throws Exception {
+    public NamedList<Object> backup() throws Exception {
         final IndexCommit indexCommit = getAndSaveIndexCommit();
         try {
             return backup(indexCommit);
@@ -128,8 +127,7 @@ public class IncrementalShardBackup {
     }
 
     // note: remember to reserve the indexCommit first so it won't get deleted concurrently
-    @SuppressWarnings({"rawtypes"})
-    protected NamedList backup(final IndexCommit indexCommit) throws Exception {
+    protected NamedList<Object> backup(final IndexCommit indexCommit) throws Exception {
         assert indexCommit != null;
         URI backupLocation = incBackupFiles.getBackupLocation();
         log.info("Creating backup snapshot at {} shardBackupMetadataFile:{}", backupLocation, shardBackupId);
diff --git a/solr/core/src/java/org/apache/solr/handler/SnapShooter.java b/solr/core/src/java/org/apache/solr/handler/SnapShooter.java
index 4b4a149..63f7a5b 100644
--- a/solr/core/src/java/org/apache/solr/handler/SnapShooter.java
+++ b/solr/core/src/java/org/apache/solr/handler/SnapShooter.java
@@ -151,8 +151,7 @@ public class SnapShooter {
     }
   }
 
-  @SuppressWarnings({"rawtypes"})
-  public NamedList createSnapshot() throws Exception {
+  public NamedList<Object> createSnapshot() throws Exception {
     final IndexCommit indexCommit = getAndSaveIndexCommit();
     try {
       return createSnapshot(indexCommit);
@@ -217,11 +216,10 @@ public class SnapShooter {
             commitName + " for core " + solrCore.getName());
   }
 
-  @SuppressWarnings({"unchecked", "rawtypes"})
-  public void createSnapAsync(final int numberToKeep, Consumer<NamedList> result) throws IOException {
+  public void createSnapAsync(final int numberToKeep, Consumer<NamedList<?>> result) throws IOException {
     //TODO should use Solr's ExecutorUtil
     new Thread(() -> {
-      NamedList snapShootDetails;
+      NamedList<Object> snapShootDetails;
       try {
         snapShootDetails = createSnapshot();
       } catch (Exception e) {
@@ -252,8 +250,7 @@ public class SnapShooter {
    * @see IndexDeletionPolicyWrapper#saveCommitPoint
    * @see IndexDeletionPolicyWrapper#releaseCommitPoint
    */
-  @SuppressWarnings({"rawtypes"})
-  protected NamedList createSnapshot(final IndexCommit indexCommit) throws Exception {
+  protected NamedList<Object> createSnapshot(final IndexCommit indexCommit) throws Exception {
     assert indexCommit != null;
     if (log.isInfoEnabled()) {
       log.info("Creating backup snapshot {} at {}", (snapshotName == null ? "<not named>" : snapshotName), baseSnapDirPath);
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlersProxy.java b/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlersProxy.java
index e5826a8..b53590e 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlersProxy.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/AdminHandlersProxy.java
@@ -124,8 +124,7 @@ public class AdminHandlersProxy {
     log.debug("Proxying {} request to node {}", endpoint, nodeName);
     URL baseUrl = new URL(zkController.zkStateReader.getBaseUrlForNodeName(nodeName));
     HttpSolrClient solr = new HttpSolrClient.Builder(baseUrl.toString()).build();
-    @SuppressWarnings({"rawtypes"})
-    SolrRequest proxyReq = new GenericSolrRequest(SolrRequest.METHOD.GET, endpoint, params);
+    SolrRequest<?> proxyReq = new GenericSolrRequest(SolrRequest.METHOD.GET, endpoint, params);
     HttpSolrClient.HttpUriRequestResponse proxyResp = solr.httpUriRequest(proxyReq);
     return new Pair<>(proxyResp.future, solr);
   }
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/BackupCoreOp.java b/solr/core/src/java/org/apache/solr/handler/admin/BackupCoreOp.java
index 5543f04..cac8468 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/BackupCoreOp.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/BackupCoreOp.java
@@ -66,8 +66,7 @@ class BackupCoreOp implements CoreAdminHandler.CoreAdminOp {
         BackupFilePaths incBackupFiles = new BackupFilePaths(repository, locationUri);
         IncrementalShardBackup incSnapShooter = new IncrementalShardBackup(repository, core, incBackupFiles,
                 prevShardBackupId, shardBackupId, Optional.ofNullable(commitName));
-        @SuppressWarnings({"rawtypes"})
-        NamedList rsp = incSnapShooter.backup();
+        NamedList<Object> rsp = incSnapShooter.backup();
         it.rsp.addResponse(rsp);
       } else {
         SnapShooter snapShooter = new SnapShooter(repository, core, locationUri, name, commitName);
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
index 75b040e..abf23ff 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
@@ -303,7 +303,6 @@ public class ConfigSetsHandler extends RequestHandlerBase implements PermissionN
     return false;
   }
 
-  @SuppressWarnings({"unchecked"})
   private void handleResponse(String operation, ZkNodeProps m,
                               SolrQueryResponse rsp, long timeout) throws KeeperException, InterruptedException {
     long time = System.nanoTime();
@@ -314,8 +313,7 @@ public class ConfigSetsHandler extends RequestHandlerBase implements PermissionN
     if (event.getBytes() != null) {
       SolrResponse response = OverseerSolrResponseSerializer.deserialize(event.getBytes());
       rsp.getValues().addAll(response.getResponse());
-      @SuppressWarnings({"rawtypes"})
-      SimpleOrderedMap exp = (SimpleOrderedMap) response.getResponse().get("exception");
+      SimpleOrderedMap<?> exp = (SimpleOrderedMap<?>) response.getResponse().get("exception");
       if (exp != null) {
         Integer code = (Integer) exp.get("rspCode");
         rsp.setException(new SolrException(code != null && code != -1 ? ErrorCode.getErrorCode(code) : ErrorCode.SERVER_ERROR, (String) exp.get("msg")));
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java b/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
index 3b013ca..324cdfa 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ContainerPluginsApi.java
@@ -180,7 +180,7 @@ public class ContainerPluginsApi {
   private void persistPlugins(Function<Map<String,Object>, Map<String,Object>> modifier) throws IOException {
     try {
       zkClientSupplier.get().atomicUpdate(ZkStateReader.CLUSTER_PROPS, bytes -> {
-        Map rawJson = bytes == null ? new LinkedHashMap() :
+        Map rawJson = bytes == null ? new LinkedHashMap<>() :
             (Map) Utils.fromJSON(bytes);
         Map pluginsModified = modifier.apply((Map) rawJson.computeIfAbsent(PLUGIN, o -> new LinkedHashMap<>()));
         if (pluginsModified == null) return null;
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
index d0c0e6d..3d2d764 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/LoggingHandler.java
@@ -47,8 +47,7 @@ import org.slf4j.LoggerFactory;
 public class LoggingHandler extends RequestHandlerBase implements SolrCoreAware {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
-  @SuppressWarnings({"rawtypes"})
-  private LogWatcher watcher;
+  private LogWatcher<?> watcher;
   private final CoreContainer cc;
   
   public LoggingHandler(CoreContainer cc) {
@@ -142,7 +141,6 @@ public class LoggingHandler extends RequestHandlerBase implements SolrCoreAware
     else {
       rsp.add("levels", watcher.getAllLevels());
   
-      @SuppressWarnings({"unchecked"})
       List<LoggerInfo> loggers = new ArrayList<>(watcher.getAllLoggers());
       Collections.sort(loggers);
   
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperStatusHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperStatusHandler.java
index 2aa4655..03a6dbb 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperStatusHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperStatusHandler.java
@@ -75,9 +75,8 @@ public class ZookeeperStatusHandler extends RequestHandlerBase {
   }
 
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
-    NamedList values = rsp.getValues();
+    NamedList<Object> values = rsp.getValues();
     if (cores.isZooKeeperAware()) {
       String zkHost = cores.getZkController().getZkServerAddress();
       ZkDynamicConfig dynConfig = null;
diff --git a/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java b/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
index faf591b..6aaeebf 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/DebugComponent.java
@@ -284,7 +284,7 @@ public class DebugComponent extends SearchComponent
     if (source == null) return dest;
     if (dest == null) {
       if (source instanceof NamedList) {
-        dest = source instanceof SimpleOrderedMap ? new SimpleOrderedMap() : new NamedList();
+        dest = source instanceof SimpleOrderedMap ? new SimpleOrderedMap<>() : new NamedList<>();
       } else {
         return source;
       }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
index 12ccfe1..75faad0 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
@@ -442,7 +442,6 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
 
 
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void handleResponses(ResponseBuilder rb, ShardRequest sreq) {
 
     if (!rb.doExpand) {
@@ -450,15 +449,16 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     }
     if ((sreq.purpose & ShardRequest.PURPOSE_GET_FIELDS) != 0) {
       SolrQueryRequest req = rb.req;
-      NamedList expanded = (NamedList) req.getContext().get("expanded");
+      @SuppressWarnings("unchecked")
+      NamedList<Object> expanded = (NamedList<Object>) req.getContext().get("expanded");
       if (expanded == null) {
-        expanded = new SimpleOrderedMap();
+        expanded = new SimpleOrderedMap<>();
         req.getContext().put("expanded", expanded);
       }
 
       for (ShardResponse srsp : sreq.responses) {
-        NamedList response = srsp.getSolrResponse().getResponse();
-        NamedList ex = (NamedList) response.get("expanded");
+        NamedList<Object> response = srsp.getSolrResponse().getResponse();
+        NamedList<?> ex = (NamedList<?>) response.get("expanded");
         for (int i=0; i<ex.size(); i++) {
           String name = ex.getName(i);
           SolrDocumentList val = (SolrDocumentList) ex.getVal(i);
@@ -468,7 +468,6 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
     }
   }
 
-  @SuppressWarnings("rawtypes")
   @Override
   public void finishStage(ResponseBuilder rb) {
 
@@ -480,9 +479,9 @@ public class ExpandComponent extends SearchComponent implements PluginInfoInitia
       return;
     }
 
-    NamedList expanded = (NamedList) rb.req.getContext().get("expanded");
+    NamedList<?> expanded = (NamedList<?>) rb.req.getContext().get("expanded");
     if (expanded == null) {
-      expanded = new SimpleOrderedMap();
+      expanded = new SimpleOrderedMap<>();
     }
 
     rb.rsp.add("expanded", expanded);
diff --git a/solr/core/src/java/org/apache/solr/handler/component/IterativeMergeStrategy.java b/solr/core/src/java/org/apache/solr/handler/component/IterativeMergeStrategy.java
index edc797e..8885fb5 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/IterativeMergeStrategy.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/IterativeMergeStrategy.java
@@ -112,8 +112,7 @@ public abstract class IterativeMergeStrategy implements MergeStrategy  {
   }
 
   public List<Future<CallBack>> callBack(List<ShardResponse> responses, QueryRequest req) {
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    List<Future<CallBack>> futures = new ArrayList();
+    List<Future<CallBack>> futures = new ArrayList<>();
     for(ShardResponse response : responses) {
       futures.add(this.executorService.submit(new CallBack(response, req)));
     }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/PivotFacetField.java b/solr/core/src/java/org/apache/solr/handler/component/PivotFacetField.java
index 9b73841..997071c 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/PivotFacetField.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/PivotFacetField.java
@@ -37,7 +37,6 @@ import org.apache.solr.common.util.NamedList;
  * @see PivotFacetValue
  * @see PivotFacetFieldValueCollection
  */
-@SuppressWarnings("rawtypes")
 public class PivotFacetField {
   
   public final String field;
@@ -352,6 +351,7 @@ public class PivotFacetField {
     
     incrementShardValueCount(shardNumber);
 
+    @SuppressWarnings("rawtypes")
     Comparable value = PivotFacetHelper.getValue(shardValue);
     int count = PivotFacetHelper.getCount(shardValue);
     
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index 7d1f560..7b262ab 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -283,7 +283,6 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
   }
 
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception
   {
     List<SearchComponent> components  = getComponents();
@@ -397,8 +396,8 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
           }
         }
         if(rb.isDebug()) {
-          NamedList debug = new NamedList();
-          debug.add("explain", new NamedList());
+          NamedList<Object> debug = new NamedList<>();
+          debug.add("explain", new NamedList<>());
           rb.rsp.add("debug", debug);
         }
         rb.rsp.getResponseHeader().asShallowMap()
diff --git a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
index be57192..a9ab7bc 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
@@ -380,8 +380,7 @@ public class TermsComponent extends SearchComponent {
     }
 
     TermsHelper ti = rb._termsHelper;
-    @SuppressWarnings({"rawtypes"})
-    NamedList terms = ti.buildResponse();
+    NamedList<Object> terms = ti.buildResponse();
 
     rb.rsp.add("terms", terms);
     if(ti.stats) {
diff --git a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
index 0e559ab..dba39e6 100644
--- a/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
+++ b/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
@@ -424,7 +424,6 @@ public class DefaultSolrHighlighter extends SolrHighlighter implements PluginInf
    * turns contains sets (field, summary) pairs.
    */
   @Override
-  @SuppressWarnings("unchecked")
   public NamedList<Object> doHighlighting(DocList docs, Query query, SolrQueryRequest req, String[] defaultFields) throws IOException {
     SolrParams params = req.getParams();
     if (!isHighlightingEnabled(params)) // also returns early if no unique key field
@@ -461,15 +460,13 @@ public class DefaultSolrHighlighter extends SolrHighlighter implements PluginInf
     IndexReader reader = new TermVectorReusingLeafReader(req.getSearcher().getSlowAtomicReader()); // SOLR-5855
 
     // Highlight each document
-    @SuppressWarnings({"rawtypes"})
-    NamedList fragments = new SimpleOrderedMap();
+    NamedList<Object> fragments = new SimpleOrderedMap<>();
     DocIterator iterator = docs.iterator();
     for (int i = 0; i < docs.size(); i++) {
       int docId = iterator.nextDoc();
       SolrDocument doc = searcher.getDocFetcher().solrDoc(docId, returnFields);
 
-      @SuppressWarnings("rawtypes")
-      NamedList docHighlights = new SimpleOrderedMap();
+      NamedList<Object> docHighlights = new SimpleOrderedMap<>();
       // Highlight per-field
       for (String fieldName : fieldNames) {
         SchemaField schemaField = schema.getFieldOrNull(fieldName);
diff --git a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
index 7dc3e26..08412d4 100644
--- a/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
+++ b/solr/core/src/java/org/apache/solr/legacy/LegacyNumericRangeQuery.java
@@ -340,13 +340,12 @@ public final class LegacyNumericRangeQuery<T extends Number> extends MultiTermQu
   }
 
   @Override
-  @SuppressWarnings({"rawtypes"})
   public final boolean equals(final Object o) {
     if (o==this) return true;
     if (!super.equals(o))
       return false;
     if (o instanceof LegacyNumericRangeQuery) {
-      final LegacyNumericRangeQuery q=(LegacyNumericRangeQuery)o;
+      final LegacyNumericRangeQuery<?> q=(LegacyNumericRangeQuery<?>)o;
       return (
         (q.min == null ? min == null : q.min.equals(min)) &&
         (q.max == null ? max == null : q.max.equals(max)) &&
diff --git a/solr/core/src/java/org/apache/solr/logging/LogWatcher.java b/solr/core/src/java/org/apache/solr/logging/LogWatcher.java
index 89bf380..8fa7510 100644
--- a/solr/core/src/java/org/apache/solr/logging/LogWatcher.java
+++ b/solr/core/src/java/org/apache/solr/logging/LogWatcher.java
@@ -124,15 +124,14 @@ public abstract class LogWatcher<E> {
    *
    * @return a LogWatcher configured for the container's logging framework
    */
-  @SuppressWarnings({"rawtypes"})
-  public static LogWatcher newRegisteredLogWatcher(LogWatcherConfig config, SolrResourceLoader loader) {
+  public static LogWatcher<?> newRegisteredLogWatcher(LogWatcherConfig config, SolrResourceLoader loader) {
 
     if (!config.isEnabled()) {
       log.debug("A LogWatcher is not enabled");
       return null;
     }
 
-    LogWatcher logWatcher = createWatcher(config, loader);
+    LogWatcher<?> logWatcher = createWatcher(config, loader);
 
     if (logWatcher != null) {
       if (config.getWatcherSize() > 0) {
@@ -146,8 +145,7 @@ public abstract class LogWatcher<E> {
     return logWatcher;
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private static LogWatcher createWatcher(LogWatcherConfig config, SolrResourceLoader loader) {
+  private static LogWatcher<?> createWatcher(LogWatcherConfig config, SolrResourceLoader loader) {
 
     String fname = config.getLoggingClass();
     String slf4jImpl;
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
index 029f5e6..3a7be2e 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -803,8 +803,7 @@ public class SolrMetricManager {
     AtomicInteger removed = new AtomicInteger();
     registry.removeMatching((name, metric) -> {
       if (metric instanceof GaugeWrapper) {
-        @SuppressWarnings({"rawtypes"})
-        GaugeWrapper wrapper = (GaugeWrapper) metric;
+        GaugeWrapper<?> wrapper = (GaugeWrapper<?>) metric;
         boolean toRemove = wrapper.getTag().contains(tagSegment);
         if (toRemove) {
           removed.incrementAndGet();
@@ -1227,7 +1226,7 @@ public class SolrMetricManager {
     return result;
   }
 
-  @SuppressWarnings({"unchecked", "rawtypes"})
+  @SuppressWarnings("unchecked")
   private PluginInfo preparePlugin(PluginInfo info, Map<String, String> defaultAttributes,
                                    Map<String, Object> defaultInitArgs) {
     if (info == null) {
@@ -1251,7 +1250,7 @@ public class SolrMetricManager {
         initArgs.put(k, v);
       }
     });
-    return new PluginInfo(info.type, attrs, new NamedList(initArgs), null);
+    return new PluginInfo(info.type, attrs, new NamedList<>(initArgs), null);
   }
 
   public void loadShardReporters(PluginInfo[] pluginInfos, SolrCore core) {
diff --git a/solr/core/src/java/org/apache/solr/request/json/JsonQueryConverter.java b/solr/core/src/java/org/apache/solr/request/json/JsonQueryConverter.java
index c51e0d3..7f14f79 100644
--- a/solr/core/src/java/org/apache/solr/request/json/JsonQueryConverter.java
+++ b/solr/core/src/java/org/apache/solr/request/json/JsonQueryConverter.java
@@ -137,8 +137,7 @@ class JsonQueryConverter {
               throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
                   "Error when parsing json query, value of query field should not be a list, found : " + entry.getValue());
             }
-            @SuppressWarnings({"rawtypes"})
-            List l = (List) entry.getValue();
+            List<?> l = (List<?>) entry.getValue();
             for (Object subVal : l) {
               builder.append(key).append("=");
               buildLocalParams(builder, subVal, true, additionalParams);
diff --git a/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java b/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
index cb77aca..f215581 100644
--- a/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
@@ -318,29 +318,27 @@ class CSVWriter extends TabularResponseWriter {
   }
 
   //NOTE: a document cannot currently contain another document
-  @SuppressWarnings({"rawtypes"})
-  List tmpList;
+  List<Object> tmpList;
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void writeSolrDocument(String name, SolrDocument doc, ReturnFields returnFields, int idx ) throws IOException {
     if (tmpList == null) {
-      tmpList = new ArrayList(1);
+      tmpList = new ArrayList<>(1);
       tmpList.add(null);
     }
 
     for (CSVField csvField : csvFields.values()) {
       Object val = doc.getFieldValue(csvField.name);
-      int nVals = val instanceof Collection ? ((Collection)val).size() : (val==null ? 0 : 1);
+      int nVals = val instanceof Collection ? ((Collection<?>)val).size() : (val==null ? 0 : 1);
       if (nVals == 0) {
         writeNull(csvField.name);
         continue;
       }
 
       if ((csvField.sf != null && csvField.sf.multiValued()) || nVals > 1) {
-        Collection values;
+        Collection<?> values;
         // normalize to a collection
         if (val instanceof Collection) {
-          values = (Collection)val;
+          values = (Collection<?>)val;
         } else {
           tmpList.set(0, val);
           values = tmpList;
@@ -362,7 +360,7 @@ class CSVWriter extends TabularResponseWriter {
       } else {
         // normalize to first value
         if (val instanceof Collection) {
-          Collection values = (Collection)val;
+          Collection<?> values = (Collection<?>)val;
           val = values.iterator().next();
         }
         // if field is polyfield, use the multi-valued printer to apply appropriate escaping
diff --git a/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java b/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
index 7ad8614..89d556b 100644
--- a/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/GeoJSONResponseWriter.java
@@ -63,7 +63,7 @@ public class GeoJSONResponseWriter extends JSONResponseWriter {
     
     SupportedFormats formats = null;
     if(sf.getType() instanceof AbstractSpatialFieldType) {
-      SpatialContext ctx = ((AbstractSpatialFieldType)sf.getType()).getSpatialContext();
+      SpatialContext ctx = ((AbstractSpatialFieldType<?>)sf.getType()).getSpatialContext();
       formats = ctx.getFormats();
     }
 
@@ -196,8 +196,7 @@ class GeoJSONWriter extends JSONWriter {
   {
     // Support multi-valued geometries
     if(geo instanceof Iterable) {
-      @SuppressWarnings({"rawtypes"})
-      Iterator iter = ((Iterable)geo).iterator();
+      Iterator<?> iter = ((Iterable<?>)geo).iterator();
       if(!iter.hasNext()) {
         return; // empty list
       }
diff --git a/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java b/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
index e3d7945..35b41af 100644
--- a/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
@@ -178,10 +178,8 @@ class PHPSerializedWriter extends JSONWriter {
   }
 
   @Override
-  @SuppressWarnings({"unchecked"})
   public void writeArray(String name, Iterator<?> val) throws IOException {
-    @SuppressWarnings({"rawtypes"})
-    ArrayList vals = new ArrayList();
+    ArrayList<Object> vals = new ArrayList<>();
     while( val.hasNext() ) {
       vals.add(val.next());
     }
diff --git a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
index b2f7577..bc4fb4d 100644
--- a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
+++ b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
@@ -119,8 +119,7 @@ public class SolrQueryResponse {
    * Gets data to be returned in this response
    * @see <a href="#returnable_data">Note on Returnable Data</a>
    */
-  @SuppressWarnings({"rawtypes"})
-  public NamedList getValues() { return values; }
+  public NamedList<Object> getValues() { return values; }
 
   /**
    * Sets data to be returned in this response
diff --git a/solr/core/src/java/org/apache/solr/response/transform/GeoTransformerFactory.java b/solr/core/src/java/org/apache/solr/response/transform/GeoTransformerFactory.java
index 74d9605..790d938 100644
--- a/solr/core/src/java/org/apache/solr/response/transform/GeoTransformerFactory.java
+++ b/solr/core/src/java/org/apache/solr/response/transform/GeoTransformerFactory.java
@@ -191,8 +191,7 @@ class GeoFieldUpdater {
     doc.remove(display);
     if(val != null) {
       if(val instanceof Iterable) {
-        @SuppressWarnings({"rawtypes"})
-        Iterator iter = ((Iterable)val).iterator();
+        Iterator<?> iter = ((Iterable<?>)val).iterator();
         while(iter.hasNext()) {
           addValue(doc, iter.next());
         }
diff --git a/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java b/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java
index c20d704..5838e10 100644
--- a/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java
+++ b/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java
@@ -113,8 +113,7 @@ public class RawValueTransformerFactory extends TransformerFactory
         return;
       }
       if(val instanceof Collection) {
-        @SuppressWarnings({"rawtypes"})
-        Collection current = (Collection)val;
+        Collection<?> current = (Collection<?>)val;
         ArrayList<WriteableStringValue> vals = new ArrayList<RawValueTransformerFactory.WriteableStringValue>();
         for(Object v : current) {
           vals.add(new WriteableStringValue(v));
diff --git a/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java b/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java
index f07bb27..11047ec 100644
--- a/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java
+++ b/solr/core/src/java/org/apache/solr/rest/BaseSolrResource.java
@@ -125,8 +125,7 @@ public abstract class BaseSolrResource {
   protected void handleException(Logger log) {
     Exception exception = getSolrResponse().getException();
     if (null != exception) {
-      @SuppressWarnings({"rawtypes"})
-      NamedList info = new SimpleOrderedMap();
+      NamedList<Object> info = new SimpleOrderedMap<>();
       this.statusCode = ResponseUtils.getErrorInfo(exception, info, log);
       getSolrResponse().add("error", info);
       String message = (String)info.get("msg");
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index cbbbb8b..c57b96a 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -140,8 +140,7 @@ public class IndexSchema {
   private static final Set<String> FIELDTYPE_KEYS = ImmutableSet.of("fieldtype", "fieldType");
   private static final Set<String> FIELD_KEYS = ImmutableSet.of("dynamicField", "field");
 
-  @SuppressWarnings({"unchecked", "rawtypes"})
-  protected Cache<String, SchemaField> dynamicFieldCache = new ConcurrentLRUCache(10000, 8000, 9000,100, false,false, null);
+  protected Cache<String, SchemaField> dynamicFieldCache = new ConcurrentLRUCache<>(10000, 8000, 9000,100, false,false, null);
 
   private Analyzer indexAnalyzer;
   private Analyzer queryAnalyzer;
diff --git a/solr/core/src/java/org/apache/solr/search/QueryParsing.java b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
index 22ad421..59291da 100644
--- a/solr/core/src/java/org/apache/solr/search/QueryParsing.java
+++ b/solr/core/src/java/org/apache/solr/search/QueryParsing.java
@@ -251,8 +251,7 @@ public class QueryParsing {
 
       out.append(q.includesUpper() ? ']' : '}');
     } else if (query instanceof LegacyNumericRangeQuery) {
-      @SuppressWarnings({"rawtypes"})
-      LegacyNumericRangeQuery q = (LegacyNumericRangeQuery) query;
+      LegacyNumericRangeQuery<?> q = (LegacyNumericRangeQuery<?>) query;
       String fname = q.getField();
       FieldType ft = writeFieldName(fname, schema, out, flags);
       out.append(q.includesMin() ? '[' : '{');
diff --git a/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java
index 130490f..7415e67 100644
--- a/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/SignificantTermsQParserPlugin.java
@@ -134,19 +134,13 @@ public class SignificantTermsQParserPlugin extends QParserPlugin {
 
     @Override
     public void finish() throws IOException {
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      List<String> outTerms = new ArrayList();
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      List<Integer> outFreq = new ArrayList();
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      List<Integer> outQueryFreq = new ArrayList();
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      List<Double> scores = new ArrayList();
-
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      NamedList<Integer> allFreq = new NamedList();
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      NamedList<Integer> allQueryFreq = new NamedList();
+      List<String> outTerms = new ArrayList<>();
+      List<Integer> outFreq = new ArrayList<>();
+      List<Integer> outQueryFreq = new ArrayList<>();
+      List<Double> scores = new ArrayList<>();
+
+      NamedList<Integer> allFreq = new NamedList<>();
+      NamedList<Integer> allQueryFreq = new NamedList<>();
 
       LinkedHashMap<String, Object> response = new LinkedHashMap<>();
 
diff --git a/solr/core/src/java/org/apache/solr/search/TextLogisticRegressionQParserPlugin.java b/solr/core/src/java/org/apache/solr/search/TextLogisticRegressionQParserPlugin.java
index 2bc3404..df13ce2 100644
--- a/solr/core/src/java/org/apache/solr/search/TextLogisticRegressionQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/TextLogisticRegressionQParserPlugin.java
@@ -208,8 +208,7 @@ public class TextLogisticRegressionQParserPlugin extends QParserPlugin {
         }
       }
 
-      @SuppressWarnings({"rawtypes"})
-      NamedList analytics = new NamedList();
+      NamedList<Object> analytics = new NamedList<>();
       rbsp.rsp.add("logit", analytics);
 
       List<Double> outWeights = new ArrayList<>();
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
index 746915b..99e9338 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetFieldProcessorByEnumTermsStream.java
@@ -85,7 +85,6 @@ class FacetFieldProcessorByEnumTermsStream extends FacetFieldProcessor implement
   }
 
   @Override
-  @SuppressWarnings({"rawtypes"})
   public void process() throws IOException {
     super.process();
 
@@ -96,7 +95,7 @@ class FacetFieldProcessorByEnumTermsStream extends FacetFieldProcessor implement
 
     setup();
     response = new SimpleOrderedMap<>();
-    response.add("buckets", new Iterator() {
+    response.add("buckets", new Iterator<>() {
       boolean retrieveNext = true;
       Object val;
 
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetRangeParser.java b/solr/core/src/java/org/apache/solr/search/facet/FacetRangeParser.java
index 4098450..cc6718f 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetRangeParser.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetRangeParser.java
@@ -24,8 +24,7 @@ import java.util.List;
 import java.util.Map;
 
 class FacetRangeParser extends FacetParser<FacetRange> {
-  @SuppressWarnings({"rawtypes"})
-  public FacetRangeParser(FacetParser parent, String key) {
+  public FacetRangeParser(FacetParser<?> parent, String key) {
     super(parent, key);
     facet = new FacetRange();
   }
diff --git a/solr/core/src/java/org/apache/solr/search/facet/FacetRangeProcessor.java b/solr/core/src/java/org/apache/solr/search/facet/FacetRangeProcessor.java
index 6885ae7..cb15371 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/FacetRangeProcessor.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/FacetRangeProcessor.java
@@ -268,8 +268,7 @@ class FacetRangeProcessor extends FacetProcessor<FacetRange> {
           "Expected List for ranges but got " + input.getClass().getSimpleName() + " = " + input
       );
     }
-    @SuppressWarnings({"rawtypes"})
-    List intervals = (List) input;
+    List<?> intervals = (List<?>) input;
     List<Range> ranges = new ArrayList<>();
     for (Object obj : intervals) {
       if (!(obj instanceof Map)) {
diff --git a/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java b/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
index fcba43c..58946b7 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/LegacyFacet.java
@@ -270,10 +270,9 @@ public class LegacyFacet {
     getCurrentSubs().put(key, sub);
   }
 
-  @SuppressWarnings({"unchecked", "rawtypes"})
   private Map<String,Object> getCurrentSubs() {
     if (currentSubs == null) {
-      currentSubs = new LinkedHashMap();
+      currentSubs = new LinkedHashMap<>();
       currentCommand.put("facet", currentSubs);
     }
     return currentSubs;
diff --git a/solr/core/src/java/org/apache/solr/search/facet/UniqueSlotAcc.java b/solr/core/src/java/org/apache/solr/search/facet/UniqueSlotAcc.java
index 0bb62da..37f5580 100644
--- a/solr/core/src/java/org/apache/solr/search/facet/UniqueSlotAcc.java
+++ b/solr/core/src/java/org/apache/solr/search/facet/UniqueSlotAcc.java
@@ -74,7 +74,6 @@ abstract class UniqueSlotAcc extends SlotAcc {
     return res;
   }
 
-  @SuppressWarnings({"unchecked", "rawtypes"})
   private Object getShardHLL(int slot) throws IOException {
     FixedBitSet ords = arr[slot];
     if (ords == null) return HLLAgg.NO_VALUES;
@@ -93,12 +92,11 @@ abstract class UniqueSlotAcc extends SlotAcc {
       hll.addRaw(hashResult.val1);
     }
 
-    SimpleOrderedMap map = new SimpleOrderedMap();
+    SimpleOrderedMap<Object> map = new SimpleOrderedMap<>();
     map.add("hll", hll.toBytes());
     return map;
   }
 
-  @SuppressWarnings({"unchecked", "rawtypes"})
   private Object getShardValue(int slot) throws IOException {
     if (factory != null) return getShardHLL(slot);
     FixedBitSet ords = arr[slot];
@@ -109,7 +107,7 @@ abstract class UniqueSlotAcc extends SlotAcc {
       unique = ords==null ? 0 : ords.cardinality();
     }
 
-    SimpleOrderedMap map = new SimpleOrderedMap();
+    SimpleOrderedMap<Object> map = new SimpleOrderedMap<>();
     map.add("unique", unique);
     map.add("nTerms", nTerms);
 
@@ -118,7 +116,7 @@ abstract class UniqueSlotAcc extends SlotAcc {
     // TODO: share values across buckets
     if (unique > 0) {
 
-      List lst = new ArrayList( Math.min(unique, maxExplicit) );
+      List<Object> lst = new ArrayList<>( Math.min(unique, maxExplicit) );
 
       int maxOrd = ords.length();
       if (maxOrd > 0) {
diff --git a/solr/core/src/java/org/apache/solr/search/function/distance/GeoDistValueSourceParser.java b/solr/core/src/java/org/apache/solr/search/function/distance/GeoDistValueSourceParser.java
index 9a6e69ca..5c87c9b 100644
--- a/solr/core/src/java/org/apache/solr/search/function/distance/GeoDistValueSourceParser.java
+++ b/solr/core/src/java/org/apache/solr/search/function/distance/GeoDistValueSourceParser.java
@@ -211,8 +211,7 @@ public class GeoDistValueSourceParser extends ValueSourceParser {
     SchemaField sf = fp.getReq().getSchema().getField(sfield);
     FieldType type = sf.getType();
     if (type instanceof AbstractSpatialFieldType) {
-      @SuppressWarnings({"rawtypes"})
-      AbstractSpatialFieldType asft = (AbstractSpatialFieldType) type;
+      AbstractSpatialFieldType<?> asft = (AbstractSpatialFieldType<?>) type;
       return new SpatialStrategyMultiValueSource(asft.getStrategy(sfield), asft.getDistanceUnits());
     }
     ValueSource vs = type.getValueSource(sf, fp);
diff --git a/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java b/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
index 70ce4e4..b7c9123 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/CloudMLTQParser.java
@@ -91,8 +91,7 @@ public class CloudMLTQParser extends QParser {
     String[] fieldNames;
 
     if (qf != null) {
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      ArrayList<String> fields = new ArrayList();
+      ArrayList<String> fields = new ArrayList<>();
       for (String fieldName : qf) {
         if (!StringUtils.isEmpty(fieldName))  {
           String[] strings = splitList.split(fieldName);
@@ -107,8 +106,7 @@ public class CloudMLTQParser extends QParser {
       boostFields = SolrPluginUtils.parseFieldBoosts(fields.toArray(new String[0]));
       fieldNames = boostFields.keySet().toArray(new String[0]);
     } else {
-      @SuppressWarnings({"unchecked", "rawtypes"})
-      ArrayList<String> fields = new ArrayList();
+      ArrayList<String> fields = new ArrayList<>();
       for (String field : doc.getFieldNames()) {
         // Only use fields that are stored and have an explicit analyzer.
         // This makes sense as the query uses tf/idf/.. for query construction.
@@ -130,8 +128,7 @@ public class CloudMLTQParser extends QParser {
     for (String field : fieldNames) {
       Collection<Object> fieldValues = doc.getFieldValues(field);
       if (fieldValues != null) {
-        @SuppressWarnings({"unchecked", "rawtypes"})
-        Collection<Object> values = new ArrayList();
+        Collection<Object> values = new ArrayList<>();
         for (Object val : fieldValues) {
           if (val instanceof IndexableField) {
             values.add(((IndexableField)val).stringValue());
@@ -190,8 +187,7 @@ public class CloudMLTQParser extends QParser {
     };
 
     core.getRequestHandler("/get").handleRequest(request, rsp);
-    @SuppressWarnings({"rawtypes"})
-    NamedList response = rsp.getValues();
+    NamedList<?> response = rsp.getValues();
 
     return (SolrDocument) response.get("doc");
   }
diff --git a/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java b/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
index 04648e0..4390c25 100644
--- a/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/mlt/SimpleMLTQParser.java
@@ -99,8 +99,7 @@ public class SimpleMLTQParser extends QParser {
         fieldNames = boostFields.keySet().toArray(new String[0]);
       } else {
         Map<String, SchemaField> fieldDefinitions = req.getSearcher().getSchema().getFields();
-        @SuppressWarnings({"unchecked", "rawtypes"})
-        ArrayList<String> fields = new ArrayList();
+        ArrayList<String> fields = new ArrayList<>();
         for (Map.Entry<String, SchemaField> entry : fieldDefinitions.entrySet()) {
           if (entry.getValue().indexed() && entry.getValue().stored())
             if (entry.getValue().getType().getNumberType() == null)
diff --git a/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java b/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java
index acc00ee..e7b02f4 100644
--- a/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java
@@ -347,7 +347,6 @@ public abstract class AuditLoggerPlugin implements Closeable, Runnable, SolrInfo
   /**
    * Set of rules for when audit logging should be muted.
    */
-  @SuppressWarnings({"unchecked", "rawtypes"})
   private class MuteRules {
     private List<List<MuteRule>> rules;
 
@@ -355,12 +354,12 @@ public abstract class AuditLoggerPlugin implements Closeable, Runnable, SolrInfo
       rules = new ArrayList<>();
       if (o != null) {
         if (o instanceof List) {
-          ((List)o).forEach(l -> {
+          ((List<?>)o).forEach(l -> {
             if (l instanceof String) {
               rules.add(Collections.singletonList(parseRule(l)));
             } else if (l instanceof List) {
               List<MuteRule> rl = new ArrayList<>();
-              ((List) l).forEach(r -> rl.add(parseRule(r)));
+              ((List<?>) l).forEach(r -> rl.add(parseRule(r)));
               rules.add(rl);
             }
           });
diff --git a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
index f04c0b1..460e8d6 100644
--- a/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
+++ b/solr/core/src/java/org/apache/solr/servlet/HttpSolrCall.java
@@ -801,8 +801,7 @@ public class HttpSolrCall {
     } finally {
       try {
         if (exp != null) {
-          @SuppressWarnings({"rawtypes"})
-          SimpleOrderedMap info = new SimpleOrderedMap();
+          SimpleOrderedMap<Object> info = new SimpleOrderedMap<>();
           int code = ResponseUtils.getErrorInfo(ex, info, log);
           sendError(code, info.toString());
         }
@@ -914,8 +913,7 @@ public class HttpSolrCall {
       if (null != ct) response.setContentType(ct);
 
       if (solrRsp.getException() != null) {
-        @SuppressWarnings({"rawtypes"})
-        NamedList info = new SimpleOrderedMap();
+        NamedList<Object> info = new SimpleOrderedMap<>();
         int code = ResponseUtils.getErrorInfo(solrRsp.getException(), info, log);
         solrRsp.add("error", info);
         response.setStatus(code);
diff --git a/solr/core/src/java/org/apache/solr/update/CommitTracker.java b/solr/core/src/java/org/apache/solr/update/CommitTracker.java
index 0cf6211..93d849c 100644
--- a/solr/core/src/java/org/apache/solr/update/CommitTracker.java
+++ b/solr/core/src/java/org/apache/solr/update/CommitTracker.java
@@ -63,8 +63,7 @@ public final class CommitTracker implements Runnable {
   //  Not a big deal but it means we must take care of MDC logging here.
   private final ScheduledExecutorService scheduler =
       Executors.newScheduledThreadPool(1, new SolrNamedThreadFactory("commitScheduler"));
-  @SuppressWarnings({"rawtypes"})
-  private ScheduledFuture pending;
+  private ScheduledFuture<?> pending;
   
   // state
   private AtomicLong docsSinceCommit = new AtomicLong(0);
diff --git a/solr/core/src/java/org/apache/solr/update/DocumentBuilder.java b/solr/core/src/java/org/apache/solr/update/DocumentBuilder.java
index 56dca6d..1f47269 100644
--- a/solr/core/src/java/org/apache/solr/update/DocumentBuilder.java
+++ b/solr/core/src/java/org/apache/solr/update/DocumentBuilder.java
@@ -166,8 +166,7 @@ public class DocumentBuilder {
       // load each field value
       boolean hasField = false;
       try {
-        @SuppressWarnings({"rawtypes"})
-        Iterator it = field.iterator();
+        Iterator<?> it = field.iterator();
         while (it.hasNext()) {
           Object v = it.next();
           if( v == null ) {
diff --git a/solr/core/src/java/org/apache/solr/update/PeerSync.java b/solr/core/src/java/org/apache/solr/update/PeerSync.java
index 57e7876..81042c1 100644
--- a/solr/core/src/java/org/apache/solr/update/PeerSync.java
+++ b/solr/core/src/java/org/apache/solr/update/PeerSync.java
@@ -556,10 +556,8 @@ public class PeerSync implements SolrMetricProducer {
       if (!(o1 instanceof List)) return 1;
       if (!(o2 instanceof List)) return -1;
 
-      @SuppressWarnings({"rawtypes"})
-      List lst1 = (List) o1;
-      @SuppressWarnings({"rawtypes"})
-      List lst2 = (List) o2;
+      List<?> lst1 = (List<?>) o1;
+      List<?> lst2 = (List<?>) o2;
 
       long l1 = Math.abs((Long) lst1.get(1));
       long l2 = Math.abs((Long) lst2.get(1));
diff --git a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java
index 3c6c643..291adee 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/AtomicUpdateDocumentMerger.java
@@ -570,7 +570,7 @@ public class AtomicUpdateDocumentMerger {
   }
 
   private Object getNativeFieldValue(String fieldName, Object val) {
-    if (isChildDoc(val) || val == null || (val instanceof Collection && ((Collection) val).isEmpty())) {
+    if (isChildDoc(val) || val == null || (val instanceof Collection && ((Collection<?>) val).isEmpty())) {
       return val;
     }
     SchemaField sf = schema.getField(fieldName);
@@ -589,8 +589,7 @@ public class AtomicUpdateDocumentMerger {
     if(!(obj instanceof Collection)) {
       return obj instanceof SolrDocumentBase;
     }
-    @SuppressWarnings({"rawtypes"})
-    Collection objValues = (Collection) obj;
+    Collection<?> objValues = (Collection<?>) obj;
     if(objValues.size() == 0) {
       return false;
     }
diff --git a/solr/core/src/java/org/apache/solr/util/RTimerTree.java b/solr/core/src/java/org/apache/solr/util/RTimerTree.java
index 712bc4a..811a0bb 100644
--- a/solr/core/src/java/org/apache/solr/util/RTimerTree.java
+++ b/solr/core/src/java/org/apache/solr/util/RTimerTree.java
@@ -70,8 +70,7 @@ public class RTimerTree extends RTimer {
     return asNamedList().toString();
   }
 
-  @SuppressWarnings({"rawtypes"})
-  public NamedList asNamedList() {
+  public NamedList<Object> asNamedList() {
     NamedList<Object> m = new SimpleOrderedMap<>();
     m.add( "time", getTime() );
     if( children.size() > 0 ) {
diff --git a/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java b/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java
index 89879e5..5045b18 100644
--- a/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java
+++ b/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java
@@ -722,8 +722,7 @@ public class FileUtil {
     try {
       // Consume stdout and stderr, to avoid blocking the command
       executor = Executors.newFixedThreadPool(2);
-      @SuppressWarnings({"rawtypes"})
-      Future output = executor.submit(() -> {
+      Future<?> output = executor.submit(() -> {
         try {
           // Read until the output stream receives an EOF and closed.
           if (LOG.isDebugEnabled()) {
@@ -748,8 +747,7 @@ public class FileUtil {
           }
         }
       });
-      @SuppressWarnings({"rawtypes"})
-      Future error = executor.submit(() -> {
+      Future<?> error = executor.submit(() -> {
         try {
           // Read until the error stream receives an EOF and closed.
           if (LOG.isDebugEnabled()) {
diff --git a/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java b/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
index 513626a..9a044ff 100644
--- a/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
+++ b/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
@@ -93,8 +93,7 @@ public class TestSolrCoreProperties extends SolrJettyTestBase {
     QueryResponse res = getSolrClient().query(params);
     assertEquals(0, res.getResults().getNumFound());
 
-    @SuppressWarnings({"rawtypes"})
-    NamedList echoedParams = (NamedList) res.getHeader().get("params");
+    NamedList<?> echoedParams = (NamedList<?>) res.getHeader().get("params");
     assertEquals("f1", echoedParams.get("p1"));
     assertEquals("f2", echoedParams.get("p2"));
   }
diff --git a/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java b/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
index 19d6dbe..39f7675 100644
--- a/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
+++ b/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
@@ -32,7 +32,6 @@ import org.junit.Test;
 public class TestEmbeddedSolrServerAdminHandler extends SolrTestCaseJ4 {
 
     @Test
-    @SuppressWarnings({"rawtypes"})
     public void testPathIsAddedToContext() throws IOException, SolrServerException {
 
         final NodeConfig config = new NodeConfig.NodeConfigBuilder("testnode", TEST_PATH())
@@ -41,7 +40,7 @@ public class TestEmbeddedSolrServerAdminHandler extends SolrTestCaseJ4 {
 
         try (final EmbeddedSolrServer server = new EmbeddedSolrServer(config, "collection1")) {
             final SystemInfoRequest info = new SystemInfoRequest();
-            final NamedList response = server.request(info);
+            final NamedList<?> response = server.request(info);
             assertTrue(response.size() > 0);
         }
     }
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistribDocExpirationUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/DistribDocExpirationUpdateProcessorTest.java
index d11546a..284e76e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistribDocExpirationUpdateProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistribDocExpirationUpdateProcessorTest.java
@@ -77,8 +77,7 @@ public class DistribDocExpirationUpdateProcessorTest extends SolrCloudTestCase {
   /**
    * Modifies the request to inlcude authentication params if needed, returns the request 
    */
-  @SuppressWarnings({"rawtypes"})
-  private <T extends SolrRequest> T setAuthIfNeeded(T req) {
+  private <T extends SolrRequest<?>> T setAuthIfNeeded(T req) {
     if (null != USER) {
       assert null != PASS;
       req.setBasicAuthCredentials(USER, PASS);
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistributedApiAsyncTrackerTest.java b/solr/core/src/test/org/apache/solr/cloud/DistributedApiAsyncTrackerTest.java
index 994e198..1c7f9bf 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistributedApiAsyncTrackerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistributedApiAsyncTrackerTest.java
@@ -49,7 +49,6 @@ public class DistributedApiAsyncTrackerTest extends SolrTestCaseJ4 {
   }
 
   @Test
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void testBasic() throws Exception {
     DistributedApiAsyncTracker daat = new DistributedApiAsyncTracker(zkClient, "/basic");
 
@@ -70,7 +69,7 @@ public class DistributedApiAsyncTrackerTest extends SolrTestCaseJ4 {
     daat.setTaskRunning(asyncId);
     assertEquals(RequestStatusState.RUNNING, daat.getAsyncTaskRequestStatus(asyncId).first());
 
-    NamedList nl = new NamedList();
+    NamedList<Object> nl = new NamedList<>();
     nl.add("MyList", "myValue");
     daat.setTaskCompleted(asyncId, new OverseerSolrResponse(nl));
     assertEquals(RequestStatusState.COMPLETED, daat.getAsyncTaskRequestStatus(asyncId).first());
@@ -113,7 +112,6 @@ public class DistributedApiAsyncTrackerTest extends SolrTestCaseJ4 {
   }
 
   @Test
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void testDisconnectAfterCompletion() throws Exception {
     final String TRACKER_ROOT = "/multiConn";
     DistributedApiAsyncTracker daat = new DistributedApiAsyncTracker(zkClient, TRACKER_ROOT);
@@ -125,7 +123,7 @@ public class DistributedApiAsyncTrackerTest extends SolrTestCaseJ4 {
       assertTrue("Could not create async task " + asyncId ,transientDaat.createNewAsyncJobTracker(asyncId));
 
       // The task completes, then connection lost
-      NamedList nl = new NamedList();
+      NamedList<Object> nl = new NamedList<>();
       nl.add("status", "I made it");
       transientDaat.setTaskCompleted(asyncId, new OverseerSolrResponse(nl));
 
@@ -144,7 +142,6 @@ public class DistributedApiAsyncTrackerTest extends SolrTestCaseJ4 {
   }
 
   @Test
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void testIdCleanup() throws Exception {
     final int maxTasks = 30; // When cleaning up, 3 async id's will be removed
     DistributedApiAsyncTracker daat = new DistributedApiAsyncTracker(zkClient, "/manyIds", maxTasks);
@@ -175,7 +172,7 @@ public class DistributedApiAsyncTrackerTest extends SolrTestCaseJ4 {
     // 2 is also in progress and was also cleaned up. It should be markable complete without issues (since that's what will happen when it completed).
     String cleanedUpId2 = Integer.toString(2);
     assertEquals("Another cleaned up ID (2) should not be visible", RequestStatusState.NOT_FOUND, daat.getAsyncTaskRequestStatus(cleanedUpId2).first());
-    NamedList nl = new NamedList();
+    NamedList<Object> nl = new NamedList<>();
     nl.add("code", "da vinci");
     daat.setTaskCompleted(cleanedUpId2, new OverseerSolrResponse(nl));
 
diff --git a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
index a4b1b12..1d68e60 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DistributedVersionInfoTest.java
@@ -337,10 +337,9 @@ public class DistributedVersionInfoTest extends SolrCloudTestCase {
    * Query the real-time get handler for a specific doc by ID to verify it
    * exists in the provided server, using distrib=false so it doesn't route to another replica.
    */
-  @SuppressWarnings("rawtypes")
   protected Long assertDocExists(HttpSolrClient solr, String coll, String docId, Long expVers) throws Exception {
     QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId, "distrib", "false", "fl", "id,_version_"));
-    NamedList rsp = solr.request(qr);
+    NamedList<?> rsp = solr.request(qr);
     SolrDocument doc = (SolrDocument)rsp.get("doc");
     String match = JSONTestUtil.matchObj("/id", doc, docId);
     assertTrue("Doc with id=" + docId + " not found in " + solr.getBaseURL() +
diff --git a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
index fb0cbbd..d873235 100644
--- a/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/LeaderVoteWaitTimeoutTest.java
@@ -293,15 +293,13 @@ public class LeaderVoteWaitTimeoutTest extends SolrCloudTestCase {
   }
 
   private void assertDocExists(HttpSolrClient solr, String coll, String docId) throws Exception {
-    @SuppressWarnings({"rawtypes"})
-    NamedList rsp = realTimeGetDocId(solr, docId);
+    NamedList<?> rsp = realTimeGetDocId(solr, docId);
     String match = JSONTestUtil.matchObj("/id", rsp.get("doc"), docId);
     assertTrue("Doc with id=" + docId + " not found in " + solr.getBaseURL()
         + " due to: " + match + "; rsp="+rsp, match == null);
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private NamedList realTimeGetDocId(HttpSolrClient solr, String docId) throws SolrServerException, IOException {
+  private NamedList<Object> realTimeGetDocId(HttpSolrClient solr, String docId) throws SolrServerException, IOException {
     QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId, "distrib", "false"));
     return solr.request(qr);
   }
diff --git a/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java b/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
index a0affc6..056a949 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ReplicationFactorTest.java
@@ -249,13 +249,12 @@ public class ReplicationFactorTest extends AbstractFullDistribZkTestBase {
     }
   }
   
-  @SuppressWarnings("rawtypes")
   protected void sendNonDirectUpdateRequestReplica(Replica replica, UpdateRequest up, int expectedRf, String collection) throws Exception {
     ZkCoreNodeProps zkProps = new ZkCoreNodeProps(replica);
     String url = zkProps.getBaseUrl() + "/" + collection;
     try (HttpSolrClient solrServer = getHttpSolrClient(url)) {
-      NamedList resp = solrServer.request(up);
-      NamedList hdr = (NamedList) resp.get("responseHeader");
+      NamedList<?> resp = solrServer.request(up);
+      NamedList<?> hdr = (NamedList<?>) resp.get("responseHeader");
       Integer batchRf = (Integer)hdr.get(UpdateRequest.REPFACT);
       // Note that this also tests if we're wonky and return an achieved rf greater than the number of live replicas.
       assertTrue("Expected rf="+expectedRf+" for batch but got "+
diff --git a/solr/core/src/test/org/apache/solr/cloud/SystemCollectionCompatTest.java b/solr/core/src/test/org/apache/solr/cloud/SystemCollectionCompatTest.java
index db96a76..ec94138 100644
--- a/solr/core/src/test/org/apache/solr/cloud/SystemCollectionCompatTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/SystemCollectionCompatTest.java
@@ -186,8 +186,7 @@ public class SystemCollectionCompatTest extends SolrCloudTestCase {
     }
     assertNotNull(overseerNode);
     LogWatcherConfig watcherCfg = new LogWatcherConfig(true, null, "WARN", 100);
-    @SuppressWarnings({"rawtypes"})
-    LogWatcher watcher = LogWatcher.newRegisteredLogWatcher(watcherCfg, null);
+    LogWatcher<?> watcher = LogWatcher.newRegisteredLogWatcher(watcherCfg, null);
 
     watcher.reset();
 
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
index 61e6dbd..9da145e 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudConsistency.java
@@ -295,15 +295,13 @@ public class TestCloudConsistency extends SolrCloudTestCase {
   }
 
   private void assertDocExists(HttpSolrClient solr, String coll, String docId) throws Exception {
-    @SuppressWarnings({"rawtypes"})
-    NamedList rsp = realTimeGetDocId(solr, docId);
+    NamedList<?> rsp = realTimeGetDocId(solr, docId);
     String match = JSONTestUtil.matchObj("/id", rsp.get("doc"), docId);
     assertTrue("Doc with id=" + docId + " not found in " + solr.getBaseURL()
         + " due to: " + match + "; rsp="+rsp, match == null);
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private NamedList realTimeGetDocId(HttpSolrClient solr, String docId) throws SolrServerException, IOException {
+  private NamedList<Object> realTimeGetDocId(HttpSolrClient solr, String docId) throws SolrServerException, IOException {
     QueryRequest qr = new QueryRequest(params("qt", "/get", "id", docId, "distrib", "false"));
     return solr.request(qr);
   }
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithSecureImpersonation.java b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithSecureImpersonation.java
index bc18ddf..e7e5e95 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithSecureImpersonation.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithSecureImpersonation.java
@@ -192,18 +192,15 @@ public class TestSolrCloudWithSecureImpersonation extends SolrTestCaseJ4 {
     }
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private SolrRequest getProxyRequest(String user, String doAs) {
+  private SolrRequest<?> getProxyRequest(String user, String doAs) {
     return getProxyRequest(user, doAs, null);
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private SolrRequest getProxyRequest(String user, String doAs, String remoteHost) {
+  private SolrRequest<?> getProxyRequest(String user, String doAs, String remoteHost) {
     return getProxyRequest(user, doAs, remoteHost, null);
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private SolrRequest getProxyRequest(String user, String doAs, String remoteHost, String remoteAddress) {
+  private SolrRequest<?> getProxyRequest(String user, String doAs, String remoteHost, String remoteAddress) {
     return new CollectionAdminRequest.List() {
       @Override
       public SolrParams getParams() {
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestStressInPlaceUpdates.java b/solr/core/src/test/org/apache/solr/cloud/TestStressInPlaceUpdates.java
index f06418a..06f8842 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestStressInPlaceUpdates.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestStressInPlaceUpdates.java
@@ -537,7 +537,6 @@ public class TestStressInPlaceUpdates extends AbstractFullDistribZkTestBase {
     }
   }
 
-  @SuppressWarnings("rawtypes")
   protected long addDocAndGetVersion(Object... fields) throws Exception {
     SolrInputDocument doc = new SolrInputDocument();
     addFields(doc, fields);
@@ -553,13 +552,12 @@ public class TestStressInPlaceUpdates extends AbstractFullDistribZkTestBase {
     // send updates to leader, to avoid SOLR-8733
     resp = ureq.process(leaderClient);
 
-    long returnedVersion = Long.parseLong(((NamedList) resp.getResponse().get("adds")).getVal(0).toString());
+    long returnedVersion = Long.parseLong(((NamedList<?>) resp.getResponse().get("adds")).getVal(0).toString());
     assertTrue("Due to SOLR-8733, sometimes returned version is 0. Let us assert that we have successfully"
         + " worked around that problem here.", returnedVersion > 0);
     return returnedVersion;
   }
 
-  @SuppressWarnings("rawtypes")
   protected long deleteDocAndGetVersion(String id, ModifiableSolrParams params, boolean deleteByQuery) throws Exception {
     params.add("versions", "true");
    
@@ -575,7 +573,7 @@ public class TestStressInPlaceUpdates extends AbstractFullDistribZkTestBase {
     resp = ureq.process(leaderClient);
     
     String key = deleteByQuery? "deleteByQuery": "deletes";
-    long returnedVersion = Long.parseLong(((NamedList) resp.getResponse().get(key)).getVal(0).toString());
+    long returnedVersion = Long.parseLong(((NamedList<?>) resp.getResponse().get(key)).getVal(0).toString());
     assertTrue("Due to SOLR-8733, sometimes returned version is 0. Let us assert that we have successfully"
         + " worked around that problem here.", returnedVersion < 0);
     return returnedVersion;
diff --git a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java
index 97aecf0..03de7b9 100644
--- a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestRequestStatusCollectionAPI.java
@@ -59,10 +59,8 @@ public class TestRequestStatusCollectionAPI extends BasicDistributedZkTest {
 
     // Check for the request to be completed.
 
-    @SuppressWarnings({"rawtypes"})
-    NamedList r = null;
-    @SuppressWarnings({"rawtypes"})
-    NamedList status = null;
+    NamedList<?> r = null;
+    NamedList<?> status = null;
     String message = null;
 
     params = new ModifiableSolrParams();
@@ -88,7 +86,7 @@ public class TestRequestStatusCollectionAPI extends BasicDistributedZkTest {
     params.set(CollectionHandlingUtils.REQUESTID, "9999999");
     try {
       r = sendRequest(params);
-      status = (NamedList) r.get("status");
+      status = (NamedList<?>) r.get("status");
       message = (String) status.get("msg");
     } catch (SolrServerException | IOException e) {
       e.printStackTrace();
diff --git a/solr/core/src/test/org/apache/solr/core/MockShardHandlerFactory.java b/solr/core/src/test/org/apache/solr/core/MockShardHandlerFactory.java
index f7eeced..272638a 100644
--- a/solr/core/src/test/org/apache/solr/core/MockShardHandlerFactory.java
+++ b/solr/core/src/test/org/apache/solr/core/MockShardHandlerFactory.java
@@ -27,8 +27,7 @@ import org.apache.solr.util.plugin.PluginInfoInitialized;
 
 /** a fake shardhandler factory that does nothing. */
 public class MockShardHandlerFactory extends ShardHandlerFactory implements PluginInfoInitialized {
-  @SuppressWarnings({"rawtypes"})
-  NamedList args;
+  NamedList<?> args;
   
   @Override
   public void init(PluginInfo info) {
diff --git a/solr/core/src/test/org/apache/solr/core/TestShardHandlerFactory.java b/solr/core/src/test/org/apache/solr/core/TestShardHandlerFactory.java
index 9b1fabe..4ca31ef 100644
--- a/solr/core/src/test/org/apache/solr/core/TestShardHandlerFactory.java
+++ b/solr/core/src/test/org/apache/solr/core/TestShardHandlerFactory.java
@@ -33,8 +33,7 @@ public class TestShardHandlerFactory extends SolrTestCaseJ4 {
     CoreContainer cc = CoreContainer.createAndLoad(home, home.resolve("solr-shardhandler.xml"));
     ShardHandlerFactory factory = cc.getShardHandlerFactory();
     assertTrue(factory instanceof MockShardHandlerFactory);
-    @SuppressWarnings({"rawtypes"})
-    NamedList args = ((MockShardHandlerFactory)factory).args;
+    NamedList<?> args = ((MockShardHandlerFactory)factory).args;
     assertEquals("myMagicRequiredValue", args.get("myMagicRequiredParameter"));
     factory.close();
     cc.shutdown();
diff --git a/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCloudSnapshots.java b/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCloudSnapshots.java
index 104de27..9419228 100644
--- a/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCloudSnapshots.java
+++ b/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCloudSnapshots.java
@@ -303,8 +303,7 @@ public class TestSolrCloudSnapshots extends SolrCloudTestCase {
     CollectionAdminResponse resp = listSnapshots.process(adminClient);
 
     assertTrue( resp.getResponse().get(SolrSnapshotManager.SNAPSHOTS_INFO) instanceof NamedList );
-    @SuppressWarnings({"rawtypes"})
-    NamedList apiResult = (NamedList) resp.getResponse().get(SolrSnapshotManager.SNAPSHOTS_INFO);
+    NamedList<?> apiResult = (NamedList<?>) resp.getResponse().get(SolrSnapshotManager.SNAPSHOTS_INFO);
 
     Collection<CollectionSnapshotMetaData> result = new ArrayList<>();
     for (int i = 0; i < apiResult.size(); i++) {
@@ -317,17 +316,15 @@ public class TestSolrCloudSnapshots extends SolrCloudTestCase {
   private Collection<SnapshotMetaData> listCoreSnapshots(SolrClient adminClient, String coreName) throws Exception {
     ListSnapshots req = new ListSnapshots();
     req.setCoreName(coreName);
-    @SuppressWarnings({"rawtypes"})
-    NamedList resp = adminClient.request(req);
+    NamedList<?> resp = adminClient.request(req);
     assertTrue( resp.get(SolrSnapshotManager.SNAPSHOTS_INFO) instanceof NamedList );
-    @SuppressWarnings({"rawtypes"})
-    NamedList apiResult = (NamedList) resp.get(SolrSnapshotManager.SNAPSHOTS_INFO);
+    NamedList<?> apiResult = (NamedList<?>) resp.get(SolrSnapshotManager.SNAPSHOTS_INFO);
 
     List<SnapshotMetaData> result = new ArrayList<>(apiResult.size());
     for(int i = 0 ; i < apiResult.size(); i++) {
       String commitName = apiResult.getName(i);
-      String indexDirPath = (String)((NamedList)apiResult.get(commitName)).get(SolrSnapshotManager.INDEX_DIR_PATH);
-      long genNumber = Long.parseLong((String)((NamedList)apiResult.get(commitName)).get(SolrSnapshotManager.GENERATION_NUM));
+      String indexDirPath = (String)((NamedList<?>)apiResult.get(commitName)).get(SolrSnapshotManager.INDEX_DIR_PATH);
+      long genNumber = Long.parseLong((String)((NamedList<?>)apiResult.get(commitName)).get(SolrSnapshotManager.GENERATION_NUM));
       result.add(new SnapshotMetaData(commitName, indexDirPath, genNumber));
     }
     return result;
diff --git a/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCoreSnapshots.java b/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCoreSnapshots.java
index 25634ac..9f33295 100644
--- a/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCoreSnapshots.java
+++ b/solr/core/src/test/org/apache/solr/core/snapshots/TestSolrCoreSnapshots.java
@@ -294,17 +294,15 @@ public class TestSolrCoreSnapshots extends SolrCloudTestCase {
   private Collection<SnapshotMetaData> listSnapshots(SolrClient adminClient, String coreName) throws Exception {
     ListSnapshots req = new ListSnapshots();
     req.setCoreName(coreName);
-    @SuppressWarnings({"rawtypes"})
-    NamedList resp = adminClient.request(req);
+    NamedList<?> resp = adminClient.request(req);
     assertTrue( resp.get("snapshots") instanceof NamedList );
-    @SuppressWarnings({"rawtypes"})
-    NamedList apiResult = (NamedList) resp.get("snapshots");
+    NamedList<?> apiResult = (NamedList<?>) resp.get("snapshots");
 
     List<SnapshotMetaData> result = new ArrayList<>(apiResult.size());
     for(int i = 0 ; i < apiResult.size(); i++) {
       String commitName = apiResult.getName(i);
-      String indexDirPath = (String)((NamedList)apiResult.get(commitName)).get("indexDirPath");
-      long genNumber = Long.parseLong((String)((NamedList)apiResult.get(commitName)).get("generation"));
+      String indexDirPath = (String)((NamedList<?>)apiResult.get(commitName)).get("indexDirPath");
+      long genNumber = Long.parseLong((String)((NamedList<?>)apiResult.get(commitName)).get("generation"));
       result.add(new SnapshotMetaData(commitName, indexDirPath, genNumber));
     }
     return result;
diff --git a/solr/core/src/test/org/apache/solr/handler/BackupStatusChecker.java b/solr/core/src/test/org/apache/solr/handler/BackupStatusChecker.java
index 089ed59..89d99db 100644
--- a/solr/core/src/test/org/apache/solr/handler/BackupStatusChecker.java
+++ b/solr/core/src/test/org/apache/solr/handler/BackupStatusChecker.java
@@ -194,8 +194,7 @@ public final class BackupStatusChecker {
     final String label = (null == backupName ? "latest backup" : backupName);
     final SimpleSolrResponse rsp = new GenericSolrRequest(GenericSolrRequest.METHOD.GET, path,
                                                           params("command", "details")).process(client);
-    @SuppressWarnings({"rawtypes"})
-    final NamedList data = rsp.getResponse();
+    final NamedList<?> data = rsp.getResponse();
     log.info("Checking Status of {}: {}", label, data);
     @SuppressWarnings({"unchecked"})
     final NamedList<String> backupData = (NamedList<String>) data.findRecursive("details","backup");
@@ -268,8 +267,7 @@ public final class BackupStatusChecker {
     assertNotNull("backumpName must not be null", backupName);
     final SimpleSolrResponse rsp = new GenericSolrRequest(GenericSolrRequest.METHOD.GET, path,
                                                           params("command", "details")).process(client);
-    @SuppressWarnings({"rawtypes"})
-    final NamedList data = rsp.getResponse();
+    final NamedList<?> data = rsp.getResponse();
     log.info("Checking Deletion Status of {}: {}", backupName, data);
     @SuppressWarnings({"unchecked"})
     final NamedList<String> backupData = (NamedList<String>) data.findRecursive("details","backup");
diff --git a/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java b/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
index ffca65f..498d4d1 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
@@ -354,13 +354,12 @@ public class TestReplicationHandler extends SolrTestCaseJ4 {
 
       if (i > 0) {
         rQuery(i, "*:*", followerClient);
-        @SuppressWarnings({"rawtypes"})
-        List replicatedAtCount = (List) ((NamedList) details.get("follower")).get("indexReplicatedAtList");
+        List<?> replicatedAtCount = (List<?>) ((NamedList<?>) details.get("follower")).get("indexReplicatedAtList");
         int tries = 0;
         while ((replicatedAtCount == null || replicatedAtCount.size() < i) && tries++ < 5) {
           Thread.sleep(1000);
           details = getDetails(followerClient);
-          replicatedAtCount = (List) ((NamedList) details.get("follower")).get("indexReplicatedAtList");
+          replicatedAtCount = (List<?>) ((NamedList<?>) details.get("follower")).get("indexReplicatedAtList");
         }
         
         assertNotNull("Expected to see that the follower has replicated" + i + ": " + details.toString(), replicatedAtCount);
diff --git a/solr/core/src/test/org/apache/solr/handler/V2StandaloneTest.java b/solr/core/src/test/org/apache/solr/handler/V2StandaloneTest.java
index 316bc84..438bd27 100644
--- a/solr/core/src/test/org/apache/solr/handler/V2StandaloneTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/V2StandaloneTest.java
@@ -39,14 +39,12 @@ public class V2StandaloneTest extends SolrTestCaseJ4{
     jetty.start();
 
     try (HttpSolrClient client = getHttpSolrClient(buildUrl(jetty.getLocalPort(),"/solr/"))) {
-      @SuppressWarnings({"rawtypes"})
-      NamedList res = client.request(new V2Request.Builder("/").build());
-      @SuppressWarnings({"rawtypes"})
-      NamedList header = (NamedList) res.get("responseHeader");
+      NamedList<?> res = client.request(new V2Request.Builder("/").build());
+      NamedList<?> header = (NamedList<?>) res.get("responseHeader");
       assertEquals(0, header.get("status"));
 
       res = client.request(new V2Request.Builder("/_introspect").build());
-      header = (NamedList) res.get("responseHeader");
+      header = (NamedList<?>) res.get("responseHeader");
       assertEquals(0, header.get("status"));
     }
 
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminCreateDiscoverTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminCreateDiscoverTest.java
index 5fa5364..5cb5510 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminCreateDiscoverTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminCreateDiscoverTest.java
@@ -206,11 +206,9 @@ public class CoreAdminCreateDiscoverTest extends SolrTestCaseJ4 {
                 CoreAdminParams.CoreAdminAction.STATUS.toString(),
                 CoreAdminParams.CORE, "testInstanceDirAsPropertyParam"),
             resp);
-    @SuppressWarnings({"rawtypes"})
-    NamedList status = (NamedList) resp.getValues().get("status");
+    NamedList<?> status = (NamedList<?>) resp.getValues().get("status");
     assertNotNull(status);
-    @SuppressWarnings({"rawtypes"})
-    NamedList coreProps = (NamedList) status.get("testInstanceDirAsPropertyParam");
+    NamedList<?> coreProps = (NamedList<?>) status.get("testInstanceDirAsPropertyParam");
     assertNotNull(status);
     String instanceDir = (String) coreProps.get("instanceDir");
     assertNotNull(instanceDir);
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
index eab817b..5dac62b 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
@@ -199,8 +199,7 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 {
       (Map<String,Exception>) resp.getValues().get("initFailures");
     assertNotNull("core failures is null", failures);
 
-    @SuppressWarnings({"rawtypes"})
-    NamedList status = (NamedList)resp.getValues().get("status");
+    NamedList<?> status = (NamedList<?>)resp.getValues().get("status");
     assertNotNull("core status is null", status);
 
     assertEquals("wrong number of core failures", 1, failures.size());
@@ -210,7 +209,7 @@ public class CoreAdminHandlerTest extends SolrTestCaseJ4 {
                0 < fail.getCause().getMessage().indexOf("dir_does_not_exist"));
 
     assertEquals("bogus_dir_core status isn't empty",
-                 0, ((NamedList)status.get("bogus_dir_core")).size());
+                 0, ((NamedList<?>)status.get("bogus_dir_core")).size());
 
 
     //Try renaming the core, we should fail
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java
index 33f6f10..22cb378 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/MBeansHandlerTest.java
@@ -63,8 +63,7 @@ public class MBeansHandlerTest extends SolrTestCaseJ4 {
     NamedList<NamedList<NamedList<Object>>> diff = SolrInfoMBeanHandler.fromXML(xml);
 
     // The stats bean for SolrInfoMBeanHandler
-    @SuppressWarnings({"rawtypes"})
-    NamedList stats = (NamedList)diff.get("ADMIN").get("/admin/mbeans").get("stats");
+    NamedList<?> stats = (NamedList<?>)diff.get("ADMIN").get("/admin/mbeans").get("stats");
 
     //System.out.println("stats:"+stats);
     Pattern p = Pattern.compile("Was: (?<was>[0-9]+), Now: (?<now>[0-9]+), Delta: (?<delta>[0-9]+)");
@@ -108,7 +107,7 @@ public class MBeansHandlerTest extends SolrTestCaseJ4 {
     xml = h.query(req);
 
     NamedList<NamedList<NamedList<Object>>> nl = SolrInfoMBeanHandler.fromXML(xml);
-    assertNotNull(((NamedList)nl.get("ADMIN").get("/admin/mbeans").get("stats")).get("ADD ADMIN./admin/mbeans.totalTime"));
+    assertNotNull(((NamedList<?>)nl.get("ADMIN").get("/admin/mbeans").get("stats")).get("ADD ADMIN./admin/mbeans.totalTime"));
   }
 
   @Test
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
index 12c3f75..338c38f 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
@@ -76,12 +76,10 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
 
     SolrQueryResponse resp = new SolrQueryResponse();
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json"), resp);
-    @SuppressWarnings({"rawtypes"})
-    NamedList values = resp.getValues();
+    NamedList<?> values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
-    @SuppressWarnings({"rawtypes"})
-    NamedList nl = (NamedList) values.get("solr.core.collection1");
+    values = (NamedList<?>) values.get("metrics");
+    NamedList<?> nl = (NamedList<?>) values.get("solr.core.collection1");
     assertNotNull(nl);
     Object o = nl.get("SEARCHER.new.errors");
     assertNotNull(o); // counter type
@@ -89,7 +87,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     // response wasn't serialized so we get here whatever MetricUtils produced instead of NamedList
     assertNotNull(((MapWriter) o)._get("count", null));
     assertEquals(0L, ((MapWriter) nl.get("SEARCHER.new.errors"))._get("count", null));
-    nl = (NamedList) values.get("solr.node");
+    nl = (NamedList<?>) values.get("solr.node");
     assertNotNull(nl.get("CONTAINER.cores.loaded")); // int gauge
     assertEquals(1, ((MapWriter) nl.get("CONTAINER.cores.loaded"))._get("value", null));
     assertNotNull(nl.get("ADMIN./admin/authorization.clientErrors")); // timer type
@@ -101,7 +99,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "group", "jvm,jetty"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(2, values.size());
     assertNotNull(values.get("solr.jetty"));
     assertNotNull(values.get("solr.jvm"));
@@ -111,7 +109,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "registry", "solr.core.collection,solr.jvm"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(2, values.size());
     assertNotNull(values.get("solr.core.collection1"));
     assertNotNull(values.get("solr.jvm"));
@@ -121,7 +119,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "registry", "solr.core.collection", "registry", "solr.jvm"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(2, values.size());
     assertNotNull(values.get("solr.core.collection1"));
     assertNotNull(values.get("solr.jvm"));
@@ -130,7 +128,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "group", "jvm,jetty"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(2, values.size());
     assertNotNull(values.get("solr.jetty"));
     assertNotNull(values.get("solr.jvm"));
@@ -139,7 +137,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "group", "jvm", "group", "jetty"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(2, values.size());
     assertNotNull(values.get("solr.jetty"));
     assertNotNull(values.get("solr.jvm"));
@@ -148,9 +146,9 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "group", "node", "type", "counter"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(1, values.size());
-    values = (NamedList) values.get("solr.node");
+    values = (NamedList<?>) values.get("solr.node");
     assertNotNull(values);
     assertNull(values.get("ADMIN./admin/authorization.errors")); // this is a timer node
 
@@ -158,11 +156,11 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "prefix", "CONTAINER.cores,CONTAINER.threadPool"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(1, values.size());
-    assertEquals(13, ((NamedList) values.get("solr.node")).size());
+    assertEquals(13, ((NamedList<?>) values.get("solr.node")).size());
     assertNotNull(values.get("solr.node"));
-    values = (NamedList) values.get("solr.node");
+    values = (NamedList<?>) values.get("solr.node");
     assertNotNull(values.get("CONTAINER.cores.lazy")); // this is a gauge node
     assertNotNull(values.get("CONTAINER.threadPool.coreContainerWorkExecutor.completed"));
     assertNotNull(values.get("CONTAINER.threadPool.coreLoadExecutor.completed"));
@@ -171,9 +169,9 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "prefix", "CONTAINER.cores", "regex", "C.*thread.*completed"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertNotNull(values.get("solr.node"));
-    values = (NamedList) values.get("solr.node");
+    values = (NamedList<?>) values.get("solr.node");
     assertEquals(5, values.size());
     assertNotNull(values.get("CONTAINER.threadPool.coreContainerWorkExecutor.completed"));
     assertNotNull(values.get("CONTAINER.threadPool.coreLoadExecutor.completed"));
@@ -182,9 +180,9 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json", "prefix", "CACHE.core.fieldCache", "property", "entries_count", MetricsHandler.COMPACT_PARAM, "true"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertNotNull(values.get("solr.core.collection1"));
-    values = (NamedList) values.get("solr.core.collection1");
+    values = (NamedList<?>) values.get("solr.core.collection1");
     assertEquals(1, values.size());
     MapWriter writer = (MapWriter) values.get("CACHE.core.fieldCache");
     assertNotNull(writer);
@@ -194,15 +192,14 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "group", "jvm", "prefix", "CONTAINER.cores"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
+    values = (NamedList<?>) values.get("metrics");
     assertEquals(0, values.size());
 
     resp = new SolrQueryResponse();
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", MetricsHandler.COMPACT_PARAM, "false", CommonParams.WT, "json", "group", "node", "type", "timer", "prefix", "CONTAINER.cores"), resp);
     values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    @SuppressWarnings({"rawtypes"})
-    SimpleOrderedMap map1 = (SimpleOrderedMap) values.get("metrics");
+    SimpleOrderedMap<?> map1 = (SimpleOrderedMap<?>) values.get("metrics");
     assertEquals(0, map1.size());
     handler.close();
   }
@@ -213,12 +210,10 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
 
     SolrQueryResponse resp = new SolrQueryResponse();
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json", MetricsHandler.COMPACT_PARAM, "true"), resp);
-    @SuppressWarnings({"rawtypes"})
-    NamedList values = resp.getValues();
+    NamedList<?> values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
-    @SuppressWarnings({"rawtypes"})
-    NamedList nl = (NamedList) values.get("solr.core.collection1");
+    values = (NamedList<?>) values.get("metrics");
+    NamedList<?> nl = (NamedList<?>) values.get("solr.core.collection1");
     assertNotNull(nl);
     Object o = nl.get("SEARCHER.new.errors");
     assertNotNull(o); // counter type
@@ -227,7 +222,6 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
   }
 
   @Test
-  @SuppressWarnings({"unchecked"})
   public void testPropertyFilter() throws Exception {
     assertQ(req("*:*"), "//result[@numFound='0']");
 
@@ -236,12 +230,10 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     SolrQueryResponse resp = new SolrQueryResponse();
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json",
         MetricsHandler.COMPACT_PARAM, "true", "group", "core", "prefix", "CACHE.searcher"), resp);
-    @SuppressWarnings({"rawtypes"})
-    NamedList values = resp.getValues();
+    NamedList<?> values = resp.getValues();
     assertNotNull(values.get("metrics"));
-    values = (NamedList) values.get("metrics");
-    @SuppressWarnings({"rawtypes"})
-    NamedList nl = (NamedList) values.get("solr.core.collection1");
+    values = (NamedList<?>) values.get("metrics");
+    NamedList<?> nl = (NamedList<?>) values.get("solr.core.collection1");
     assertNotNull(nl);
     assertTrue(nl.size() > 0);
     nl.forEach((k, v) -> {
@@ -256,8 +248,8 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
         MetricsHandler.COMPACT_PARAM, "true", "group", "core", "prefix", "CACHE.searcher",
         "property", "inserts", "property", "size"), resp);
     values = resp.getValues();
-    values = (NamedList) values.get("metrics");
-    nl = (NamedList) values.get("solr.core.collection1");
+    values = (NamedList<?>) values.get("metrics");
+    nl = (NamedList<?>) values.get("solr.core.collection1");
     assertNotNull(nl);
     assertTrue(nl.size() > 0);
     nl.forEach((k, v) -> {
@@ -279,8 +271,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     SolrQueryResponse resp = new SolrQueryResponse();
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json",
         MetricsHandler.KEY_PARAM, key1), resp);
-    @SuppressWarnings({"rawtypes"})
-    NamedList values = resp.getValues();
+    NamedList<?> values = resp.getValues();
     Object val = values.findRecursive("metrics", key1);
     assertNotNull(val);
     assertTrue(val instanceof MapWriter);
@@ -332,8 +323,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json",
         MetricsHandler.KEY_PARAM, "foo", MetricsHandler.KEY_PARAM, "foo:bar:baz:xyz"), resp);
     values = resp.getValues();
-    @SuppressWarnings({"rawtypes"})
-    NamedList metrics = (NamedList) values.get("metrics");
+    NamedList<?> metrics = (NamedList<?>) values.get("metrics");
     assertEquals(0, metrics.size());
     assertNotNull(values.findRecursive("errors", "foo"));
     assertNotNull(values.findRecursive("errors", "foo:bar:baz:xyz"));
@@ -343,7 +333,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json",
         MetricsHandler.KEY_PARAM, "foo:bar:baz"), resp);
     values = resp.getValues();
-    metrics = (NamedList) values.get("metrics");
+    metrics = (NamedList<?>) values.get("metrics");
     assertEquals(0, metrics.size());
     assertNotNull(values.findRecursive("errors", "foo:bar:baz"));
 
@@ -352,7 +342,7 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
     handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json",
         MetricsHandler.KEY_PARAM, "solr.jetty:unknown:baz"), resp);
     values = resp.getValues();
-    metrics = (NamedList) values.get("metrics");
+    metrics = (NamedList<?>) values.get("metrics");
     assertEquals(0, metrics.size());
     assertNotNull(values.findRecursive("errors", "solr.jetty:unknown:baz"));
 
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java b/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java
index 3ec99a5..0681608 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/StatsReloadRaceTest.java
@@ -96,7 +96,6 @@ public class StatsReloadRaceTest extends SolrTestCaseJ4 {
         CoreAdminParams.CoreAdminAction.REQUESTSTATUS.toString(),
         CoreAdminParams.REQUESTID, "" + asyncId), rsp);
     
-    @SuppressWarnings("unchecked")
     List<Object> statusLog = rsp.getValues().getAll(CoreAdminAction.STATUS.name());
 
     assertFalse("expect status check w/o error, got:" + statusLog,
@@ -116,13 +115,11 @@ public class StatsReloadRaceTest extends SolrTestCaseJ4 {
       h.getCoreContainer().getRequestHandler("/admin/metrics").handleRequest(
           req("prefix", "SEARCHER", "registry", registry, "compact", "true"), rsp);
 
-      @SuppressWarnings({"rawtypes"})
-      NamedList values = rsp.getValues();
+      NamedList<?> values = rsp.getValues();
       // this is not guaranteed to exist right away after core reload - there's a
       // small window between core load and before searcher metrics are registered
       // so we may have to check a few times, and then fail softly if reload is not complete yet
-      @SuppressWarnings({"rawtypes"})
-      NamedList metrics = (NamedList)values.get("metrics");
+      NamedList<?> metrics = (NamedList<?>)values.get("metrics");
       if (metrics == null) {
         if (softFail) {
           return;
@@ -130,7 +127,7 @@ public class StatsReloadRaceTest extends SolrTestCaseJ4 {
           fail("missing 'metrics' element in handler's output: " + values.asMap(5).toString());
         }
       }
-      metrics = (NamedList)metrics.get(registry);
+      metrics = (NamedList<?>)metrics.get(registry);
       if (metrics.get(key) != null) {
         found = true;
         assertTrue(metrics.get(key) instanceof Long);
diff --git a/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
index 015e31a..07b14f2 100644
--- a/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/component/SpellCheckComponentTest.java
@@ -244,7 +244,6 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
   }
 
   @Test
-  @SuppressWarnings({"unchecked"})
   public void testReloadOnStart() throws Exception {
     assertU(adoc("id", "0", "lowerfilt", "This is a title"));
     assertU(commit());
@@ -253,10 +252,8 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
         "default", "spellcheck.build", "true");
     assertQ(request, "//arr[@name='suggestion'][.='title']");
 
-    @SuppressWarnings({"rawtypes"})
-    NamedList args = new NamedList();
-    @SuppressWarnings({"rawtypes"})
-    NamedList spellchecker = new NamedList();
+    NamedList<Object> args = new NamedList<>();
+    NamedList<Object> spellchecker = new NamedList<>();
     spellchecker.add(SolrSpellChecker.DICTIONARY_NAME, "default");
     spellchecker.add(AbstractLuceneSpellChecker.FIELD, "lowerfilt");
     spellchecker.add(AbstractLuceneSpellChecker.INDEX_DIR, "spellchecker1");
@@ -300,7 +297,6 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
   }
     
     @Test
-    @SuppressWarnings({"unchecked", "rawtypes"})
     public void testThresholdTokenFrequency() throws Exception {
 
         //"document" is in 2 documents but "another" is only in 1.
@@ -329,26 +325,26 @@ public class SpellCheckComponentTest extends SolrTestCaseJ4 {
 
         SolrRequestHandler handler = core.getRequestHandler("/spellCheckCompRH");
         SolrQueryResponse rsp = new SolrQueryResponse();
-        rsp.addResponseHeader(new SimpleOrderedMap());
+        rsp.addResponseHeader(new SimpleOrderedMap<>());
         SolrQueryRequest req = new LocalSolrQueryRequest(core, params);
         handler.handleRequest(req, rsp);
         req.close();
-        NamedList values = rsp.getValues();
-        NamedList spellCheck = (NamedList) values.get("spellcheck");
-        NamedList suggestions = (NamedList) spellCheck.get("suggestions");
+        NamedList<?> values = rsp.getValues();
+        NamedList<?> spellCheck = (NamedList<?>) values.get("spellcheck");
+        NamedList<?> suggestions = (NamedList<?>) spellCheck.get("suggestions");
         assertTrue(suggestions.get("suggestion")==null);
         assertTrue((Boolean) spellCheck.get("correctlySpelled")==false);
 
         params.remove(SpellingParams.SPELLCHECK_DICT);
         params.add(SpellingParams.SPELLCHECK_DICT, "threshold_direct");
         rsp = new SolrQueryResponse();
-        rsp.addResponseHeader(new SimpleOrderedMap());
+        rsp.addResponseHeader(new SimpleOrderedMap<>());
         req = new LocalSolrQueryRequest(core, params);
         handler.handleRequest(req, rsp);
         req.close();
         values = rsp.getValues();
-        spellCheck = (NamedList) values.get("spellcheck");
-                suggestions = (NamedList) spellCheck.get("suggestions");
+        spellCheck = (NamedList<?>) values.get("spellcheck");
+                suggestions = (NamedList<?>) spellCheck.get("suggestions");
         assertTrue(suggestions.get("suggestion")==null);
         assertTrue((Boolean) spellCheck.get("correctlySpelled")==false);
     }
diff --git a/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java b/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java
index 7e472bd..552a5db 100644
--- a/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java
+++ b/solr/core/src/test/org/apache/solr/handler/designer/TestSchemaDesignerAPI.java
@@ -863,8 +863,7 @@ public class TestSchemaDesignerAPI extends SolrCloudTestCase implements SchemaDe
     assertNotNull(fieldTypesAdded.get("test_txt"));
   }
 
-  @SuppressWarnings("rawtypes")
-  protected void assertDesignerSettings(Map<String, Object> expected, NamedList actual) {
+  protected void assertDesignerSettings(Map<String, Object> expected, NamedList<?> actual) {
     for (String expKey : expected.keySet()) {
       Object expValue = expected.get(expKey);
       assertEquals("Value for designer setting '" + expKey + "' not match expected!", expValue, actual.get(expKey));
diff --git a/solr/core/src/test/org/apache/solr/handler/tagger/TaggerTestCase.java b/solr/core/src/test/org/apache/solr/handler/tagger/TaggerTestCase.java
index 2dcdaf2..25c7d86 100644
--- a/solr/core/src/test/org/apache/solr/handler/tagger/TaggerTestCase.java
+++ b/solr/core/src/test/org/apache/solr/handler/tagger/TaggerTestCase.java
@@ -138,10 +138,8 @@ public abstract class TaggerTestCase extends SolrTestCaseJ4 {
     }
   }
 
-  @SuppressWarnings("unchecked")
   protected TestTag[] pullTagsFromResponse(SolrQueryRequest req, SolrQueryResponse rsp ) throws IOException {
-    @SuppressWarnings({"rawtypes"})
-    NamedList rspValues = rsp.getValues();
+    NamedList<?> rspValues = rsp.getValues();
     Map<String, String> matchingNames = new HashMap<>();
     SolrIndexSearcher searcher = req.getSearcher();
     DocList docList = (DocList) rspValues.get("response");
@@ -156,9 +154,11 @@ public abstract class TaggerTestCase extends SolrTestCaseJ4 {
     }
 
     //build TestTag[] aTags from response ('a' is actual)
+    @SuppressWarnings("unchecked")
     List<NamedList<Object>> mTagsList = (List<NamedList<Object>>) rspValues.get("tags");
     List<TestTag> aTags = new ArrayList<>();
     for (NamedList<Object> map : mTagsList) {
+      @SuppressWarnings("unchecked")
       List<String> foundIds = (List<String>) map.get("ids");
       for (String id  : foundIds) {
         aTags.add(new TestTag(
diff --git a/solr/core/src/test/org/apache/solr/highlight/DummyHighlighter.java b/solr/core/src/test/org/apache/solr/highlight/DummyHighlighter.java
index f380129..2b445e4 100644
--- a/solr/core/src/test/org/apache/solr/highlight/DummyHighlighter.java
+++ b/solr/core/src/test/org/apache/solr/highlight/DummyHighlighter.java
@@ -27,10 +27,9 @@ import java.io.IOException;
 public class DummyHighlighter extends SolrHighlighter {
 
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public NamedList<Object> doHighlighting(DocList docs, Query query,
       SolrQueryRequest req, String[] defaultFields) throws IOException {
-    NamedList fragments = new SimpleOrderedMap();
+    NamedList<Object> fragments = new SimpleOrderedMap<>();
     fragments.add("dummy", "thing1");
     return fragments;
   }
diff --git a/solr/core/src/test/org/apache/solr/logging/TestLogWatcher.java b/solr/core/src/test/org/apache/solr/logging/TestLogWatcher.java
index a351ea8..4532c53 100644
--- a/solr/core/src/test/org/apache/solr/logging/TestLogWatcher.java
+++ b/solr/core/src/test/org/apache/solr/logging/TestLogWatcher.java
@@ -47,8 +47,7 @@ public class TestLogWatcher extends SolrTestCaseJ4 {
   //       explicitly. See SOLR-12732.
   @Test
   public void testLog4jWatcher() throws InterruptedException {
-    @SuppressWarnings({"rawtypes"})
-    LogWatcher watcher = null;
+    LogWatcher<?> watcher = null;
     int lim = random().nextInt(3) + 2;
     // Every time through this loop, insure that, of all the test messages that have been logged, only the current
     // test message is present. NOTE: there may be log messages from the superclass the first time around.
diff --git a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrSlf4jReporterTest.java b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrSlf4jReporterTest.java
index 4387f95..b78e45b 100644
--- a/solr/core/src/test/org/apache/solr/metrics/reporters/SolrSlf4jReporterTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/reporters/SolrSlf4jReporterTest.java
@@ -69,8 +69,7 @@ public class SolrSlf4jReporterTest extends SolrTestCaseJ4 {
     assertTrue(reporter2 instanceof SolrSlf4jReporter);
 
     LogWatcherConfig watcherCfg = new LogWatcherConfig(true, null, null, 100);
-    @SuppressWarnings({"rawtypes"})
-    LogWatcher watcher = LogWatcher.newRegisteredLogWatcher(watcherCfg, null);
+    LogWatcher<?> watcher = LogWatcher.newRegisteredLogWatcher(watcherCfg, null);
     watcher.setThreshold("INFO");
 
     watcher.reset();
diff --git a/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java b/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java
index 5631df3..ea0b3d3 100644
--- a/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java
+++ b/solr/core/src/test/org/apache/solr/response/JSONWriterTest.java
@@ -93,15 +93,13 @@ public class JSONWriterTest extends SolrTestCaseJ4 {
     assertEquals(JSONWriter.JSON_NL_STYLE_COUNT, namedListStyles.length);
   }
 
-  @SuppressWarnings({"unchecked"})
   private void implTestJSON(final String namedListStyle) throws IOException {
     SolrQueryRequest req = req("wt","json","json.nl",namedListStyle, "indent", "off");
     SolrQueryResponse rsp = new SolrQueryResponse();
     JSONResponseWriter w = new JSONResponseWriter();
 
     StringWriter buf = new StringWriter();
-    @SuppressWarnings({"rawtypes"})
-    NamedList nl = new NamedList();
+    NamedList<Object> nl = new NamedList<>();
     nl.add("data1", "he\u2028llo\u2029!");       // make sure that 2028 and 2029 are both escaped (they are illegal in javascript)
     nl.add(null, 42);
     nl.add(null, null);
diff --git a/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java b/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java
index 4d2df6a..864325e 100644
--- a/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java
+++ b/solr/core/src/test/org/apache/solr/response/SmileWriterTest.java
@@ -91,8 +91,7 @@ public class SmileWriterTest extends SolrTestCaseJ4 {
     SmileResponseWriter w = new SmileResponseWriter();
 
     ByteArrayOutputStream buf = new ByteArrayOutputStream();
-    @SuppressWarnings({"rawtypes"})
-    NamedList nl = new NamedList();
+    NamedList<Object> nl = new NamedList<>();
     nl.add("data1", "he\u2028llo\u2029!");       // make sure that 2028 and 2029 are both escaped (they are illegal in javascript)
     nl.add(null, 42);
     rsp.add("nl", nl);
diff --git a/solr/core/src/test/org/apache/solr/schema/SpatialRPTFieldTypeTest.java b/solr/core/src/test/org/apache/solr/schema/SpatialRPTFieldTypeTest.java
index 05166ba..8eade38 100644
--- a/solr/core/src/test/org/apache/solr/schema/SpatialRPTFieldTypeTest.java
+++ b/solr/core/src/test/org/apache/solr/schema/SpatialRPTFieldTypeTest.java
@@ -202,8 +202,7 @@ public class SpatialRPTFieldTypeTest extends AbstractBadConfigTestBase {
     setupRPTField("miles", "true", "WKT", random().nextBoolean()
         ? new SpatialRecursivePrefixTreeFieldType() : new RptWithGeometrySpatialField());
 
-    @SuppressWarnings({"rawtypes"})
-    AbstractSpatialFieldType ftype = (AbstractSpatialFieldType)
+    AbstractSpatialFieldType<?> ftype = (AbstractSpatialFieldType<?>)
         h.getCore().getLatestSchema().getField("geo").getType();
 
     String wkt = "POINT (1 2)";
@@ -221,8 +220,7 @@ public class SpatialRPTFieldTypeTest extends AbstractBadConfigTestBase {
     setupRPTField("miles", "true", "GeoJSON", random().nextBoolean()
         ? new SpatialRecursivePrefixTreeFieldType() : new RptWithGeometrySpatialField());
 
-    @SuppressWarnings({"rawtypes"})
-    AbstractSpatialFieldType ftype = (AbstractSpatialFieldType)
+    AbstractSpatialFieldType<?> ftype = (AbstractSpatialFieldType<?>)
         h.getCore().getLatestSchema().getField("geo").getType();
 
     String json = "{\"type\":\"Point\",\"coordinates\":[1,2]}";
diff --git a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java
index 085ba1a..652063b 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestCloudManagedSchema.java
@@ -59,13 +59,10 @@ public class TestCloudManagedSchema extends AbstractFullDistribZkTestBase {
     String previousBaseURL = client.getBaseURL();
     // Strip /collection1 step from baseURL - requests fail otherwise
     client.setBaseURL(previousBaseURL.substring(0, previousBaseURL.lastIndexOf("/")));
-    @SuppressWarnings({"rawtypes"})
-    NamedList namedListResponse = client.request(request);
+    NamedList<?> namedListResponse = client.request(request);
     client.setBaseURL(previousBaseURL); // Restore baseURL 
-    @SuppressWarnings({"rawtypes"})
-    NamedList status = (NamedList)namedListResponse.get("status");
-    @SuppressWarnings({"rawtypes"})
-    NamedList collectionStatus = (NamedList)status.getVal(0);
+    NamedList<?> status = (NamedList<?>)namedListResponse.get("status");
+    NamedList<?> collectionStatus = (NamedList<?>)status.getVal(0);
     String collectionSchema = (String)collectionStatus.get(CoreAdminParams.SCHEMA);
     // Make sure the upgrade to managed schema happened
     assertEquals("Schema resource name differs from expected name", "managed-schema", collectionSchema);
diff --git a/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java b/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java
index f0ccd99..d209f9d 100644
--- a/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java
+++ b/solr/core/src/test/org/apache/solr/schema/TestManagedSchema.java
@@ -145,12 +145,9 @@ public class TestManagedSchema extends AbstractBadConfigTestBase {
     SolrQueryResponse response = new SolrQueryResponse();
     admin.handleRequestBody(request, response);
     assertNull("Exception on create", response.getException());
-    @SuppressWarnings({"rawtypes"})
-    NamedList responseValues = response.getValues();
-    @SuppressWarnings({"rawtypes"})
-    NamedList status = (NamedList)responseValues.get("status");
-    @SuppressWarnings({"rawtypes"})
-    NamedList collectionStatus = (NamedList)status.get(collection);
+    NamedList<?> responseValues = response.getValues();
+    NamedList<?> status = (NamedList<?>)responseValues.get("status");
+    NamedList<?> collectionStatus = (NamedList<?>)status.get(collection);
     String collectionSchema = (String)collectionStatus.get(CoreAdminParams.SCHEMA);
     assertEquals("Schema resource name differs from expected name", expectedSchemaResource, collectionSchema);
   }
diff --git a/solr/core/src/test/org/apache/solr/search/facet/SpatialHeatmapFacetsTest.java b/solr/core/src/test/org/apache/solr/search/facet/SpatialHeatmapFacetsTest.java
index a177767..8192730 100644
--- a/solr/core/src/test/org/apache/solr/search/facet/SpatialHeatmapFacetsTest.java
+++ b/solr/core/src/test/org/apache/solr/search/facet/SpatialHeatmapFacetsTest.java
@@ -104,8 +104,7 @@ public class SpatialHeatmapFacetsTest extends BaseDistributedSearchTestCase {
 
     // ----- Search
     // this test simply has some 0's, nulls, 1's and a 2 in there.
-    @SuppressWarnings({"rawtypes"})
-    NamedList hmObj = getHmObj(query(params(baseParams,
+    NamedList<?> hmObj = getHmObj(query(params(baseParams,
         FacetParams.FACET_HEATMAP_GEOM, "[\"50 20\" TO \"180 90\"]",
         FacetParams.FACET_HEATMAP_LEVEL, "4")));
     List<List<Integer>> counts = (List<List<Integer>>) hmObj.get("counts_ints2D");
@@ -233,8 +232,7 @@ public class SpatialHeatmapFacetsTest extends BaseDistributedSearchTestCase {
 
     // ----- Search
     // this test simply has some 0's, nulls, 1's and a 2 in there.
-    @SuppressWarnings({"rawtypes"})
-    NamedList hmObj = getHmObj(query(params(baseParams,
+    NamedList<?> hmObj = getHmObj(query(params(baseParams,
         "json.facet", "{f1:{type:heatmap, f:" + FIELD + " geom:'[\"50 20\" TO \"180 90\"]', gridLevel:4}}")));
     List<List<Integer>> counts = (List<List<Integer>>) hmObj.get("counts_ints2D");
     List<List<Integer>> expectedCounts1 = Arrays.asList(
@@ -267,11 +265,9 @@ public class SpatialHeatmapFacetsTest extends BaseDistributedSearchTestCase {
               "q2:{type:query, q:'id:4', " + jsonHeatmap + " } " +
               "}"));
       {
-        @SuppressWarnings({"rawtypes"})
-        final NamedList q1Res = (NamedList) response.getResponse().findRecursive("facets", "q1");
+        final NamedList<?> q1Res = (NamedList<?>) response.getResponse().findRecursive("facets", "q1");
         assertEquals("1", q1Res.get("count").toString());
-        @SuppressWarnings({"rawtypes"})
-        final NamedList q2Res = (NamedList) response.getResponse().findRecursive("facets", "q2");
+        final NamedList<?> q2Res = (NamedList<?>) response.getResponse().findRecursive("facets", "q2");
         assertEquals("1", q2Res.get("count").toString());
         // essentially, these will differ only in the heatmap counts but otherwise will be the same
         assertNotNull(compare(q1Res, q2Res, flags, handle));
@@ -307,15 +303,14 @@ public class SpatialHeatmapFacetsTest extends BaseDistributedSearchTestCase {
     //good enough for this test method
   }
 
-  @SuppressWarnings({"rawtypes"})
-  private NamedList getHmObj(QueryResponse response) {
+  private NamedList<?> getHmObj(QueryResponse response) {
     // classic faceting
-    final NamedList classicResp = (NamedList) response.getResponse().findRecursive("facet_counts", "facet_heatmaps", FIELD);
+    final NamedList<?> classicResp = (NamedList<?>) response.getResponse().findRecursive("facet_counts", "facet_heatmaps", FIELD);
     if (classicResp != null) {
       return classicResp;
     }
     // JSON Facet
-    return (NamedList) response.getResponse().findRecursive("facets", "f1");
+    return (NamedList<?>) response.getResponse().findRecursive("facets", "f1");
   }
 
   @Test
diff --git a/solr/core/src/test/org/apache/solr/search/facet/TestCloudJSONFacetSKGEquiv.java b/solr/core/src/test/org/apache/solr/search/facet/TestCloudJSONFacetSKGEquiv.java
index 021eb13..c0d6035 100644
--- a/solr/core/src/test/org/apache/solr/search/facet/TestCloudJSONFacetSKGEquiv.java
+++ b/solr/core/src/test/org/apache/solr/search/facet/TestCloudJSONFacetSKGEquiv.java
@@ -496,8 +496,7 @@ public class TestCloudJSONFacetSKGEquiv extends SolrCloudTestCase {
     try {
       final QueryResponse rsp = (new QueryRequest(params)).process(getRandClient(random()));
       assertNotNull(params + " is null rsp?", rsp);
-      @SuppressWarnings({"rawtypes"})
-      final NamedList topNamedList = rsp.getResponse();
+      final NamedList<?> topNamedList = rsp.getResponse();
       assertNotNull(params + " is null topNamedList?", topNamedList);
       
       // skip past the (implicit) top Facet query to get it's "sub-facets" (the real facets)...
@@ -725,8 +724,7 @@ public class TestCloudJSONFacetSKGEquiv extends SolrCloudTestCase {
     try {
 
       // start by recording the results of the purely "default" behavior...
-      @SuppressWarnings({"rawtypes"})
-      final NamedList expected = getFacetResponse(basicParams);
+      final NamedList<?> expected = getFacetResponse(basicParams);
 
       // now loop over all permutations of processors and sweep values and and compare them to the "default"...
       for (FacetMethod method : EnumSet.allOf(FacetMethod.class)) {
@@ -737,8 +735,7 @@ public class TestCloudJSONFacetSKGEquiv extends SolrCloudTestCase {
             options.add("sweep_val", sweep.toString());
           }
           
-          @SuppressWarnings({"rawtypes"})
-          final NamedList actual = getFacetResponse(SolrParams.wrapAppended(options, basicParams));
+          final NamedList<?> actual = getFacetResponse(SolrParams.wrapAppended(options, basicParams));
           
           // we can't rely on a trivial assertEquals() comparison...
           // 
@@ -768,14 +765,13 @@ public class TestCloudJSONFacetSKGEquiv extends SolrCloudTestCase {
    * We ignore {@link QueryResponse#getJsonFacetingResponse()} because it isn't as useful for
    * doing a "deep equals" comparison across requests
    */
-  @SuppressWarnings({"rawtypes"})
-  private NamedList getFacetResponse(final SolrParams params) {
+  private NamedList<?> getFacetResponse(final SolrParams params) {
     try {
       final QueryResponse rsp = (new QueryRequest(params)).process(getRandClient(random()));
       assertNotNull(params + " is null rsp?", rsp);
-      final NamedList topNamedList = rsp.getResponse();
+      final NamedList<Object> topNamedList = rsp.getResponse();
       assertNotNull(params + " is null topNamedList?", topNamedList);
-      final NamedList facetResponse = (NamedList) topNamedList.get("facets");
+      final NamedList<?> facetResponse = (NamedList<?>) topNamedList.get("facets");
       assertNotNull("null facet results?", facetResponse);
       assertEquals("numFound mismatch with top count?",
                    rsp.getResults().getNumFound(), ((Number)facetResponse.get("count")).longValue());
diff --git a/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java b/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
index 54e816c..8a09264 100644
--- a/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
+++ b/solr/core/src/test/org/apache/solr/update/PeerSyncTest.java
@@ -338,8 +338,7 @@ public class PeerSyncTest extends BaseDistributedSearchTestCase {
 
   void assertSync(SolrClient client, int numVersions, boolean expectedResult, String... syncWith) throws IOException, SolrServerException {
     QueryRequest qr = new QueryRequest(params("qt","/get", "getVersions",Integer.toString(numVersions), "sync", StrUtils.join(Arrays.asList(syncWith), ',')));
-    @SuppressWarnings({"rawtypes"})
-    NamedList rsp = client.request(qr);
+    NamedList<?> rsp = client.request(qr);
     assertEquals(expectedResult, (Boolean) rsp.get("sync"));
   }
   
diff --git a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
index 3eccdfa..74748b7 100644
--- a/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
+++ b/solr/core/src/test/org/apache/solr/update/TestInPlaceUpdatesDistrib.java
@@ -124,7 +124,6 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
   
   @Test
   @ShardsFixed(num = 3)
-  @SuppressWarnings("unchecked")
   //28-June-2018 @BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // 21-May-2018
   // commented 4-Sep-2018 @LuceneTestCase.BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // 2-Aug-2018
   // commented out on: 17-Feb-2019   @BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // annotated on: 24-Dec-2018
@@ -1229,7 +1228,6 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     return ur;
   }
 
-  @SuppressWarnings("rawtypes")
   protected long addDocAndGetVersion(Object... fields) throws Exception {
     SolrInputDocument doc = new SolrInputDocument();
     addFields(doc, fields);
@@ -1242,7 +1240,7 @@ public class TestInPlaceUpdatesDistrib extends AbstractFullDistribZkTestBase {
     // send updates to leader, to avoid SOLR-8733
     resp = ureq.process(LEADER);
     
-    long returnedVersion = Long.parseLong(((NamedList)resp.getResponse().get("adds")).getVal(0).toString());
+    long returnedVersion = Long.parseLong(((NamedList<?>)resp.getResponse().get("adds")).getVal(0).toString());
     assertTrue("Due to SOLR-8733, sometimes returned version is 0. Let us assert that we have successfully"
         + " worked around that problem here.", returnedVersion > 0);
     return returnedVersion;
diff --git a/solr/core/src/test/org/apache/solr/update/UpdateLogTest.java b/solr/core/src/test/org/apache/solr/update/UpdateLogTest.java
index fb4ec29..9c0bb40 100644
--- a/solr/core/src/test/org/apache/solr/update/UpdateLogTest.java
+++ b/solr/core/src/test/org/apache/solr/update/UpdateLogTest.java
@@ -183,8 +183,7 @@ public class UpdateLogTest extends SolrTestCaseJ4 {
       // verify that the document is deleted, by doing an RTG call
       assertJQ(req("qt","/get", "id","1"), "=={'doc':null}");
     } else { // dbi
-      @SuppressWarnings({"rawtypes"})
-      List entry = ((List)ulog.lookup(DOC_1_INDEXED_ID));
+      List<?> entry = ((List<?>)ulog.lookup(DOC_1_INDEXED_ID));
       assertEquals(UpdateLog.DELETE, (int)entry.get(UpdateLog.FLAGS_IDX) & UpdateLog.OPERATION_MASK);
     }
   }
diff --git a/solr/core/src/test/org/apache/solr/update/processor/IgnoreLargeDocumentProcessorFactoryTest.java b/solr/core/src/test/org/apache/solr/update/processor/IgnoreLargeDocumentProcessorFactoryTest.java
index 98b1f43..f084535 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/IgnoreLargeDocumentProcessorFactoryTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/IgnoreLargeDocumentProcessorFactoryTest.java
@@ -37,9 +37,8 @@ import static org.apache.solr.update.processor.IgnoreLargeDocumentProcessorFacto
 public class IgnoreLargeDocumentProcessorFactoryTest extends SolrTestCase {
 
   @Test
-  @SuppressWarnings({"unchecked", "rawtypes"})
   public void testProcessor() throws IOException {
-    NamedList args = new NamedList();
+    NamedList<Object> args = new NamedList<>();
     args.add(IgnoreLargeDocumentProcessorFactory.LIMIT_SIZE_PARAM, 1);
 
     IgnoreLargeDocumentProcessorFactory factory = new IgnoreLargeDocumentProcessorFactory();
@@ -48,7 +47,7 @@ public class IgnoreLargeDocumentProcessorFactoryTest extends SolrTestCase {
     UpdateRequestProcessor processor = factory.getInstance(null, null, null);
     expectThrows(SolrException.class, () -> processor.processAdd(getUpdate(1024)));
 
-    args = new NamedList();
+    args = new NamedList<>();
     args.add(IgnoreLargeDocumentProcessorFactory.LIMIT_SIZE_PARAM, 2);
     factory = new IgnoreLargeDocumentProcessorFactory();
     factory.init(args);
diff --git a/solr/core/src/test/org/apache/solr/util/TestRTimerTree.java b/solr/core/src/test/org/apache/solr/util/TestRTimerTree.java
index 443e55d..12e6335 100644
--- a/solr/core/src/test/org/apache/solr/util/TestRTimerTree.java
+++ b/solr/core/src/test/org/apache/solr/util/TestRTimerTree.java
@@ -75,15 +75,12 @@ public class TestRTimerTree extends SolrTestCase {
     assertEquals(120, (int) subt.getTime());
     assertEquals(220, (int) rt.getTime());
 
-    @SuppressWarnings({"rawtypes"})
-    NamedList nl = rt.asNamedList();
+    NamedList<Object> nl = rt.asNamedList();
     assertEquals(220, ((Double) nl.get("time")).intValue());
-    @SuppressWarnings({"rawtypes"})
-    NamedList sub1nl = (NamedList) nl.get("sub1");
+    NamedList<?> sub1nl = (NamedList<?>) nl.get("sub1");
     assertNotNull(sub1nl);
     assertEquals(120, ((Double) sub1nl.get("time")).intValue());
-    @SuppressWarnings({"rawtypes"})
-    NamedList sub11nl = (NamedList) sub1nl.get("sub1.1");
+    NamedList<?> sub11nl = (NamedList<?>) sub1nl.get("sub1.1");
     assertNotNull(sub11nl);
     assertEquals(20, ((Double) sub11nl.get("time")).intValue());
   }
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java b/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
index 1290612..07a7611 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/NamedList.java
@@ -518,8 +518,9 @@ public class NamedList<T> implements Cloneable, Serializable, Iterable<Map.Entry
     };
   }
 
+  @SuppressWarnings("rawtypes")
   public Map asMap(int maxDepth) {
-    LinkedHashMap result = new LinkedHashMap();
+    LinkedHashMap result = new LinkedHashMap<>();
     for(int i=0;i<size();i++){
       Object val = getVal(i);
       if (val instanceof NamedList && maxDepth> 0) {
@@ -533,7 +534,7 @@ public class NamedList<T> implements Cloneable, Serializable, Iterable<Map.Entry
           list.add(val);
           result.put(getName(i),old);
         } else {
-          ArrayList l = new ArrayList();
+          ArrayList l = new ArrayList<>();
           l.add(old);
           l.add(val);
           result.put(getName(i), l);