You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by vl...@apache.org on 2023/05/18 13:15:41 UTC

[jmeter] branch master updated: style: use bounded wildcards for private, and static methods

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

vladimirsitnikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new e94f69ccee style: use bounded wildcards for private, and static methods
e94f69ccee is described below

commit e94f69cceeed785f1e0dd23e968f28c483851b01
Author: Vladimir Sitnikov <si...@gmail.com>
AuthorDate: Thu May 18 14:38:33 2023 +0300

    style: use bounded wildcards for private, and static methods
    
    The changes are generated by IDEA, however, the public API changes
    were not included in this commit.
---
 .../main/java/org/apache/jmeter/extractor/RegexExtractor.java  |  8 ++++----
 .../main/java/org/apache/jmeter/extractor/XPath2Extractor.java |  2 +-
 .../main/java/org/apache/jmeter/extractor/XPathExtractor.java  |  2 +-
 .../main/java/org/apache/jmeter/visualizers/RenderAsXML.java   |  2 +-
 .../apache/jmeter/visualizers/ViewResultsFullVisualizer.java   |  6 +++---
 .../backend/graphite/PickleGraphiteMetricsSender.java          |  4 ++--
 .../backend/graphite/TextGraphiteMetricsSender.java            |  4 ++--
 src/core/src/main/java/org/apache/jmeter/JMeter.java           |  6 +++---
 .../main/java/org/apache/jmeter/config/gui/ArgumentsPanel.java |  4 ++--
 .../java/org/apache/jmeter/engine/StandardJMeterEngine.java    |  4 ++--
 .../main/java/org/apache/jmeter/engine/util/ValueReplacer.java |  2 +-
 .../main/java/org/apache/jmeter/gui/GlobalUndoableEdit.java    |  4 ++--
 .../main/java/org/apache/jmeter/gui/action/ActionRouter.java   |  6 +++---
 .../java/org/apache/jmeter/gui/action/LoadRecentProject.java   |  2 +-
 .../src/main/java/org/apache/jmeter/gui/action/Restart.java    |  2 +-
 src/core/src/main/java/org/apache/jmeter/gui/action/Save.java  |  6 +++---
 .../java/org/apache/jmeter/gui/action/SearchTreeDialog.java    |  2 +-
 .../org/apache/jmeter/gui/action/template/TemplateManager.java |  2 +-
 .../main/java/org/apache/jmeter/gui/tree/JMeterTreeModel.java  |  2 +-
 .../main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java    |  2 +-
 .../src/main/java/org/apache/jmeter/gui/util/MenuFactory.java  |  6 +++---
 .../jmeter/report/config/ReportGeneratorConfiguration.java     |  2 +-
 .../java/org/apache/jmeter/report/config/SubConfiguration.java |  2 +-
 .../java/org/apache/jmeter/report/dashboard/JsonExporter.java  |  2 +-
 .../org/apache/jmeter/report/dashboard/ReportGenerator.java    |  2 +-
 .../java/org/apache/jmeter/samplers/AsynchSampleSender.java    |  4 ++--
 .../apache/jmeter/testelement/AbstractScopedTestElement.java   |  4 ++--
 .../org/apache/jmeter/testelement/AbstractTestElement.java     |  2 +-
 .../src/main/java/org/apache/jmeter/threads/JMeterThread.java  | 10 +++++-----
 .../src/main/java/org/apache/jmeter/threads/TestCompiler.java  |  4 ++--
 src/core/src/main/java/org/apache/jmeter/util/XPathUtil.java   |  6 +++---
 .../java/org/apache/jmeter/util/keystore/JmeterKeyStore.java   |  2 +-
 .../org/apache/jmeter/functions/RandomFromMultipleVars.java    |  2 +-
 .../src/main/java/org/apache/jorphan/collections/HashTree.java |  2 +-
 .../src/main/java/org/apache/jorphan/gui/DynamicStyle.java     |  4 ++--
 src/jorphan/src/main/java/org/apache/jorphan/gui/JFactory.java |  2 +-
 .../src/main/java/org/apache/jorphan/gui/JMeterUIDefaults.java |  4 ++--
 .../src/main/java/org/apache/jorphan/reflect/ClassFinder.java  |  6 +++---
 .../src/main/java/org/apache/jorphan/util/JOrphanUtils.java    |  2 +-
 src/launcher/src/main/java/org/apache/jmeter/NewDriver.java    |  2 +-
 .../apache/jmeter/protocol/http/control/DNSCacheManager.java   |  2 +-
 .../apache/jmeter/protocol/http/modifier/AnchorModifier.java   |  6 +++---
 .../org/apache/jmeter/protocol/http/parser/URLCollection.java  |  4 ++--
 .../apache/jmeter/protocol/http/proxy/FormCharSetFinder.java   |  2 +-
 .../org/apache/jmeter/protocol/http/proxy/ProxyControl.java    |  4 ++--
 .../org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java   | 10 +++++-----
 .../org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java  |  2 +-
 .../apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java   |  2 +-
 .../apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java    |  6 +++---
 .../org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java   |  2 +-
 50 files changed, 91 insertions(+), 91 deletions(-)

diff --git a/src/components/src/main/java/org/apache/jmeter/extractor/RegexExtractor.java b/src/components/src/main/java/org/apache/jmeter/extractor/RegexExtractor.java
index c80360712b..3194e9d124 100644
--- a/src/components/src/main/java/org/apache/jmeter/extractor/RegexExtractor.java
+++ b/src/components/src/main/java/org/apache/jmeter/extractor/RegexExtractor.java
@@ -313,7 +313,7 @@ public class RegexExtractor extends AbstractScopedTestElement implements PostPro
     }
 
     private static int matchStrings(int matchNumber, Perl5Matcher matcher,
-            Pattern pattern, List<MatchResult> matches, int found,
+            Pattern pattern, List<? super MatchResult> matches, int found,
             String inputString) {
         PatternMatcherInput input = new PatternMatcherInput(inputString);
         while (matchNumber <=0 || found != matchNumber) {
@@ -329,7 +329,7 @@ public class RegexExtractor extends AbstractScopedTestElement implements PostPro
     }
 
     private static int matchStrings(int matchNumber, java.util.regex.Pattern pattern,
-            List<java.util.regex.MatchResult> matches, int found,
+            List<? super java.util.regex.MatchResult> matches, int found,
             String inputString) {
         Matcher matcher = pattern.matcher(inputString);
         while (matchNumber <=0 || found != matchNumber) {
@@ -513,7 +513,7 @@ public class RegexExtractor extends AbstractScopedTestElement implements PostPro
      *            the entry number in the list
      * @return MatchResult
      */
-    private static MatchResult getCorrectMatch(List<MatchResult> matches, int entry) {
+    private static MatchResult getCorrectMatch(List<? extends MatchResult> matches, int entry) {
         int matchSize = matches.size();
 
         if (matchSize <= 0 || entry > matchSize){
@@ -528,7 +528,7 @@ public class RegexExtractor extends AbstractScopedTestElement implements PostPro
         return matches.get(entry - 1);
     }
 
-    private static java.util.regex.MatchResult getCorrectMatchJavaRegex(List<java.util.regex.MatchResult> matches, int entry) {
+    private static java.util.regex.MatchResult getCorrectMatchJavaRegex(List<? extends java.util.regex.MatchResult> matches, int entry) {
         int matchSize = matches.size();
 
         if (matchSize <= 0 || entry > matchSize){
diff --git a/src/components/src/main/java/org/apache/jmeter/extractor/XPath2Extractor.java b/src/components/src/main/java/org/apache/jmeter/extractor/XPath2Extractor.java
index 689a8e29af..1d51ad4e15 100644
--- a/src/components/src/main/java/org/apache/jmeter/extractor/XPath2Extractor.java
+++ b/src/components/src/main/java/org/apache/jmeter/extractor/XPath2Extractor.java
@@ -222,7 +222,7 @@ public class XPath2Extractor
      * @throws SaxonApiException
      * @throws FactoryConfigurationError
      */
-    private void getValuesForXPath(String query, List<String> matchStrings, int matchNumber, String responseData)
+    private void getValuesForXPath(String query, List<? super String> matchStrings, int matchNumber, String responseData)
             throws SaxonApiException, FactoryConfigurationError {
         XPathUtil.putValuesForXPathInListUsingSaxon(responseData, query, matchStrings, getFragment(), matchNumber, getNamespaces());
     }
diff --git a/src/components/src/main/java/org/apache/jmeter/extractor/XPathExtractor.java b/src/components/src/main/java/org/apache/jmeter/extractor/XPathExtractor.java
index 5a60bd7981..170435f926 100644
--- a/src/components/src/main/java/org/apache/jmeter/extractor/XPathExtractor.java
+++ b/src/components/src/main/java/org/apache/jmeter/extractor/XPathExtractor.java
@@ -318,7 +318,7 @@ public class XPathExtractor extends AbstractScopedTestElement implements
      *
      * @throws TransformerException
      */
-    private void getValuesForXPath(Document d,String query, List<String> matchStrings, int matchNumber)
+    private void getValuesForXPath(Document d,String query, List<? super String> matchStrings, int matchNumber)
         throws TransformerException {
         XPathUtil.putValuesForXPathInList(d, query, matchStrings, getFragment(), matchNumber);
     }
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/RenderAsXML.java b/src/components/src/main/java/org/apache/jmeter/visualizers/RenderAsXML.java
index beb976f2ad..22ca4d8c8f 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/RenderAsXML.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/RenderAsXML.java
@@ -152,7 +152,7 @@ public class RenderAsXML extends SamplerResultTab
         }
 
         @SuppressWarnings("JdkObsolete")
-        private static void applyToChildren(TreePath parent, Consumer<TreePath> method) {
+        private static void applyToChildren(TreePath parent, Consumer<? super TreePath> method) {
             TreeNode node = (TreeNode) parent.getLastPathComponent();
             Enumeration<?> e = node.children();
             while (e.hasMoreElements()) {
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
index 5ec83c5e5c..44216aa711 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
@@ -236,7 +236,7 @@ implements ActionListener, TreeSelectionListener, Clearable, ItemListener {
 
     private static TreePath checkExpandedOrSelected(List<TreeNode> path,
             Object item, Object oldSelectedObject,
-            Set<Object> oldExpandedObjects, Set<TreePath> newExpandedPaths,
+            Set<Object> oldExpandedObjects, Set<? super TreePath> newExpandedPaths,
             TreePath defaultPath) {
         TreePath result = defaultPath;
         if (oldSelectedObject == item) {
@@ -250,7 +250,7 @@ implements ActionListener, TreeSelectionListener, Clearable, ItemListener {
 
     private static TreePath checkExpandedOrSelected(List<TreeNode> path,
             Object item, Object oldSelectedObject,
-            Set<Object> oldExpandedObjects, Set<TreePath> newExpandedPaths,
+            Set<Object> oldExpandedObjects, Set<? super TreePath> newExpandedPaths,
             TreePath defaultPath, DefaultMutableTreeNode extensionNode) {
         TreePath result = defaultPath;
         if (oldSelectedObject == item) {
@@ -279,7 +279,7 @@ implements ActionListener, TreeSelectionListener, Clearable, ItemListener {
 
     private TreePath addSubResults(DefaultMutableTreeNode currNode,
             SampleResult res, List<TreeNode> path, Object selectedObject,
-            Set<Object> oldExpandedObjects, Set<TreePath> newExpandedPaths) {
+            Set<Object> oldExpandedObjects, Set<? super TreePath> newExpandedPaths) {
         SampleResult[] subResults = res.getSubResults();
 
         int leafIndex = 0;
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/PickleGraphiteMetricsSender.java b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/PickleGraphiteMetricsSender.java
index bd33c81c75..b0e450452f 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/PickleGraphiteMetricsSender.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/PickleGraphiteMetricsSender.java
@@ -55,7 +55,7 @@ class PickleGraphiteMetricsSender extends AbstractGraphiteMetricsSender {
     private List<MetricTuple> metrics = new ArrayList<>();
 
     private SocketConnectionInfos socketConnectionInfos;
-    private GenericKeyedObjectPool<SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool;
+    private GenericKeyedObjectPool<? super SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool;
     private String prefix;
 
     PickleGraphiteMetricsSender() {
@@ -79,7 +79,7 @@ class PickleGraphiteMetricsSender extends AbstractGraphiteMetricsSender {
 
     /** Setup used for testing, or if explicit customisation is required. */
     public void setup(SocketConnectionInfos socketConnectionInfos,
-                      GenericKeyedObjectPool<SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool,
+                      GenericKeyedObjectPool<? super SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool,
                       String prefix) {
         this.socketConnectionInfos = socketConnectionInfos;
         this.socketOutputStreamPool = socketOutputStreamPool;
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/TextGraphiteMetricsSender.java b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/TextGraphiteMetricsSender.java
index 5b6b4052e6..e72a2531bf 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/TextGraphiteMetricsSender.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/graphite/TextGraphiteMetricsSender.java
@@ -39,7 +39,7 @@ class TextGraphiteMetricsSender extends AbstractGraphiteMetricsSender {
     private List<MetricTuple> metrics = new ArrayList<>();
 
     private SocketConnectionInfos socketConnectionInfos;
-    private GenericKeyedObjectPool<SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool;
+    private GenericKeyedObjectPool<? super SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool;
     private String prefix;
 
     TextGraphiteMetricsSender() {
@@ -63,7 +63,7 @@ class TextGraphiteMetricsSender extends AbstractGraphiteMetricsSender {
 
     /** Setup used for testing, or if explicit customisation is required. */
     public void setup(SocketConnectionInfos socketConnectionInfos,
-                      GenericKeyedObjectPool<SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool,
+                      GenericKeyedObjectPool<? super SocketConnectionInfos, SocketOutputStream> socketOutputStreamPool,
                       String prefix) {
         this.socketConnectionInfos = socketConnectionInfos;
         this.socketOutputStreamPool = socketOutputStreamPool;
diff --git a/src/core/src/main/java/org/apache/jmeter/JMeter.java b/src/core/src/main/java/org/apache/jmeter/JMeter.java
index 1e02e7f9c2..fa8aeb3584 100644
--- a/src/core/src/main/java/org/apache/jmeter/JMeter.java
+++ b/src/core/src/main/java/org/apache/jmeter/JMeter.java
@@ -1187,7 +1187,7 @@ public class JMeter implements JMeterPlugin {
             this.reportGenerator = reportGenerator;
         }
 
-        public void setStartedRemoteEngines(List<JMeterEngine> engines) {
+        public void setStartedRemoteEngines(List<? extends JMeterEngine> engines) {
             if (runMode != RunMode.REMOTE) {
                 throw new IllegalArgumentException("This method should only be called in RunMode.REMOTE");
             }
@@ -1355,7 +1355,7 @@ public class JMeter implements JMeterPlugin {
         return "true".equals(System.getProperty(JMeter.JMETER_NON_GUI)); //$NON-NLS-1$
     }
 
-    private static void startUdpDdaemon(final List<JMeterEngine> engines) {
+    private static void startUdpDdaemon(final List<? extends JMeterEngine> engines) {
         int port = JMeterUtils.getPropDefault("jmeterengine.nongui.port", UDP_PORT_DEFAULT); // $NON-NLS-1$
         int maxPort = JMeterUtils.getPropDefault("jmeterengine.nongui.maxport", 4455); // $NON-NLS-1$
         if (port > 1000){
@@ -1375,7 +1375,7 @@ public class JMeter implements JMeterPlugin {
         }
     }
 
-    private static void waitForSignals(final List<JMeterEngine> engines, DatagramSocket socket) {
+    private static void waitForSignals(final List<? extends JMeterEngine> engines, DatagramSocket socket) {
         byte[] buf = new byte[80];
         System.out.println("Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port "+socket.getLocalPort());//NOSONAR
         DatagramPacket request = new DatagramPacket(buf, buf.length);
diff --git a/src/core/src/main/java/org/apache/jmeter/config/gui/ArgumentsPanel.java b/src/core/src/main/java/org/apache/jmeter/config/gui/ArgumentsPanel.java
index b9f6c8edeb..7fe323b9a5 100644
--- a/src/core/src/main/java/org/apache/jmeter/config/gui/ArgumentsPanel.java
+++ b/src/core/src/main/java/org/apache/jmeter/config/gui/ArgumentsPanel.java
@@ -108,7 +108,7 @@ public class ArgumentsPanel extends AbstractConfigGui implements ActionListener
     /** Disable buttons :Detail, Add, Add from Clipboard, Delete, Up and Down*/
     private final boolean disableButtons;
 
-    private final Function<String[], Argument> argCreator;
+    private final Function<String[], ? extends Argument> argCreator;
 
     /** Command for adding a row to the table. */
     private static final String ADD = "add"; // $NON-NLS-1$
@@ -250,7 +250,7 @@ public class ArgumentsPanel extends AbstractConfigGui implements ActionListener
      * @param argCreator function to create {@link Argument}s from Strings taken from clipboard
      */
     public ArgumentsPanel(String label, Color bkg, boolean enableUpDown, boolean standalone, ObjectTableModel model,
-            boolean disableButtons, Function<String[], Argument> argCreator) {
+            boolean disableButtons, Function<String[], ? extends Argument> argCreator) {
         tableLabel = new JLabel(label);
         this.enableUpDown = enableUpDown;
         this.disableButtons = disableButtons;
diff --git a/src/core/src/main/java/org/apache/jmeter/engine/StandardJMeterEngine.java b/src/core/src/main/java/org/apache/jmeter/engine/StandardJMeterEngine.java
index e6eb117492..db68aa7132 100644
--- a/src/core/src/main/java/org/apache/jmeter/engine/StandardJMeterEngine.java
+++ b/src/core/src/main/java/org/apache/jmeter/engine/StandardJMeterEngine.java
@@ -237,7 +237,7 @@ public class StandardJMeterEngine implements JMeterEngine, Runnable {
         }
     }
 
-    private void notifyTestListenersOfStart(SearchByClass<TestStateListener> testListeners) {
+    private void notifyTestListenersOfStart(SearchByClass<? extends TestStateListener> testListeners) {
         for (TestStateListener tl : testListeners.getSearchResults()) {
             if (tl instanceof TestBean) {
                 TestBeanHelper.prepare((TestElement) tl);
@@ -250,7 +250,7 @@ public class StandardJMeterEngine implements JMeterEngine, Runnable {
         }
     }
 
-    private void notifyTestListenersOfEnd(SearchByClass<TestStateListener> testListeners) {
+    private void notifyTestListenersOfEnd(SearchByClass<? extends TestStateListener> testListeners) {
         log.info("Notifying test listeners of end of test");
         for (TestStateListener tl : testListeners.getSearchResults()) {
             try {
diff --git a/src/core/src/main/java/org/apache/jmeter/engine/util/ValueReplacer.java b/src/core/src/main/java/org/apache/jmeter/engine/util/ValueReplacer.java
index 8f7678eea0..dab214267b 100644
--- a/src/core/src/main/java/org/apache/jmeter/engine/util/ValueReplacer.java
+++ b/src/core/src/main/java/org/apache/jmeter/engine/util/ValueReplacer.java
@@ -81,7 +81,7 @@ public class ValueReplacer {
         setProperties(el, newProps);
     }
 
-    private static void setProperties(TestElement el, Collection<JMeterProperty> newProps) {
+    private static void setProperties(TestElement el, Collection<? extends JMeterProperty> newProps) {
         el.clear();
         for (JMeterProperty jmp : newProps) {
             el.setProperty(jmp);
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/GlobalUndoableEdit.java b/src/core/src/main/java/org/apache/jmeter/gui/GlobalUndoableEdit.java
index b00f32bd0a..6bdfbc79c5 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/GlobalUndoableEdit.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/GlobalUndoableEdit.java
@@ -28,9 +28,9 @@ public final class GlobalUndoableEdit extends AbstractUndoableEdit {
     private static final long serialVersionUID = -4964577622742131354L;
     private final UndoHistoryItem item;
     private final UndoHistoryItem previous;
-    private final Consumer<UndoHistoryItem> loader;
+    private final Consumer<? super UndoHistoryItem> loader;
 
-    public GlobalUndoableEdit(UndoHistoryItem item, UndoHistoryItem previous, Consumer<UndoHistoryItem> loader) {
+    public GlobalUndoableEdit(UndoHistoryItem item, UndoHistoryItem previous, Consumer<? super UndoHistoryItem> loader) {
         this.item = item;
         this.previous = previous;
         this.loader = loader;
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/action/ActionRouter.java b/src/core/src/main/java/org/apache/jmeter/gui/action/ActionRouter.java
index 49b66206c1..24536f7ec7 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/action/ActionRouter.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/action/ActionRouter.java
@@ -221,7 +221,7 @@ public final class ActionRouter implements ActionListener {
      * @param listener {@link ActionListener}
      * @param actionListeners {@link Set} of {@link ActionListener}
      */
-    private static void removeActionListener(Class<?> action, ActionListener listener, Map<String, Set<ActionListener>> actionListeners) {
+    private static void removeActionListener(Class<?> action, ActionListener listener, Map<? super String, Set<ActionListener>> actionListeners) {
         if (action != null) {
             Set<ActionListener> set = actionListeners.get(action.getName());
             if (set != null) {
@@ -251,7 +251,7 @@ public final class ActionRouter implements ActionListener {
      * @param listener {@link ActionListener}
      * @param actionListeners {@link Set}
      */
-    private static void addActionListener(Class<?> action, ActionListener listener, Map<String, Set<ActionListener>> actionListeners) {
+    private static void addActionListener(Class<?> action, ActionListener listener, Map<? super String, Set<ActionListener>> actionListeners) {
         if (action != null) {
             Set<ActionListener> set = actionListeners.get(action.getName());
             if (set == null) {
@@ -297,7 +297,7 @@ public final class ActionRouter implements ActionListener {
      * @param e {@link ActionEvent}
      * @param actionListeners {@link Set}
      */
-    private static void actionPerformed(Class<? extends Command> action, ActionEvent e, Map<String, Set<ActionListener>> actionListeners) {
+    private static void actionPerformed(Class<? extends Command> action, ActionEvent e, Map<String, ? extends Set<ActionListener>> actionListeners) {
         if (action != null) {
             Set<ActionListener> listenerSet = actionListeners.get(action.getName());
             if (listenerSet != null && !listenerSet.isEmpty()) {
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/action/LoadRecentProject.java b/src/core/src/main/java/org/apache/jmeter/gui/action/LoadRecentProject.java
index 0b394a749b..a75554ca6a 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/action/LoadRecentProject.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/action/LoadRecentProject.java
@@ -254,7 +254,7 @@ public class LoadRecentProject extends Load {
      * @param fileLoadRecentFiles List of JMenuItem
      * @return true if at least on JMenuItem is visible
      */
-    public static boolean hasVisibleMenuItem(List<JComponent> fileLoadRecentFiles) {
+    public static boolean hasVisibleMenuItem(List<? extends JComponent> fileLoadRecentFiles) {
         return fileLoadRecentFiles.stream()
                 .anyMatch(JComponent::isVisible);
     }
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/action/Restart.java b/src/core/src/main/java/org/apache/jmeter/gui/action/Restart.java
index e2fcc1d39f..9c0597735c 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/action/Restart.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/action/Restart.java
@@ -177,7 +177,7 @@ public class Restart extends AbstractActionWithNoRunningTest implements MenuCrea
      * @param processArgs arguments to be given to ProcessBuilder
      * @param mainCommand original command line split at spaces
      */
-    private static void processRemainingArgs(List<String> processArgs, String[] mainCommand) {
+    private static void processRemainingArgs(List<? super String> processArgs, String[] mainCommand) {
         boolean paramValue = false;
         StringBuilder partialParamValue = new StringBuilder();
         for (int i = 1; i < mainCommand.length; i++) {
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/action/Save.java b/src/core/src/main/java/org/apache/jmeter/gui/action/Save.java
index 32e3846cac..2cb8051072 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/action/Save.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/action/Save.java
@@ -400,7 +400,7 @@ public class Save extends AbstractAction {
      * @param backupFiles
      *            {@link List} of {@link File}
      */
-    private static int getHighestVersionNumber(Pattern backupPattern, List<File> backupFiles) {
+    private static int getHighestVersionNumber(Pattern backupPattern, List<? extends File> backupFiles) {
         return backupFiles.stream().map(backupFile -> backupPattern.matcher(backupFile.getName()))
                 .filter(matcher -> matcher.find() && matcher.groupCount() > 0)
                 .mapToInt(matcher -> Integer.parseInt(matcher.group(1))).max().orElse(0);
@@ -414,7 +414,7 @@ public class Save extends AbstractAction {
      * @return list of files to be deleted based upon properties described
      *         {@link #createBackupFile(File)}
      */
-    private static List<File> backupFilesToDelete(List<File> backupFiles) {
+    private static List<File> backupFilesToDelete(List<? extends File> backupFiles) {
         List<File> filesToDelete = new ArrayList<>();
         if (BACKUP_MAX_HOURS > 0) {
             filesToDelete.addAll(expiredBackupFiles(backupFiles));
@@ -434,7 +434,7 @@ public class Save extends AbstractAction {
      * @param backupFiles {@link List} of {@link File} to filter
      * @return {@link List} of {@link File} that are expired
      */
-    private static List<File> expiredBackupFiles(List<File> backupFiles) {
+    private static List<File> expiredBackupFiles(List<? extends File> backupFiles) {
         if (BACKUP_MAX_HOURS > 0) {
             final long expiryMillis = System.currentTimeMillis() - (1L * BACKUP_MAX_HOURS * MS_PER_HOUR);
             return backupFiles.stream().filter(file -> file.lastModified() < expiryMillis).collect(Collectors.toList());
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/action/SearchTreeDialog.java b/src/core/src/main/java/org/apache/jmeter/gui/action/SearchTreeDialog.java
index 8e47768091..97d64e456f 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/action/SearchTreeDialog.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/action/SearchTreeDialog.java
@@ -387,7 +387,7 @@ public class SearchTreeDialog extends JDialog implements ActionListener { // NOS
      * @param expand true if we want to expand
      * @param nodes Set of {@link JMeterTreeNode} to mark
      */
-    private static void markConcernedNodes(boolean expand, Set<JMeterTreeNode> nodes) {
+    private static void markConcernedNodes(boolean expand, Set<? extends JMeterTreeNode> nodes) {
         GuiPackage guiInstance = GuiPackage.getInstance();
         JTree jTree = guiInstance.getMainFrame().getTree();
         for (JMeterTreeNode jMeterTreeNode : nodes) {
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/action/template/TemplateManager.java b/src/core/src/main/java/org/apache/jmeter/gui/action/template/TemplateManager.java
index 37f4e73c04..a41f6dd86f 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/action/template/TemplateManager.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/action/template/TemplateManager.java
@@ -188,7 +188,7 @@ public class TemplateManager {
      * @param templates Map of {@link Template} referenced by name
      * @param templateNode {@link Node} the xml template node
      */
-    static void parseTemplateNode(Map<String, Template> templates, Node templateNode) {
+    static void parseTemplateNode(Map<? super String, ? super Template> templates, Node templateNode) {
         if (templateNode.getNodeType() == Node.ELEMENT_NODE) {
             Template template = new Template();
             Element element =  (Element) templateNode;
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/tree/JMeterTreeModel.java b/src/core/src/main/java/org/apache/jmeter/gui/tree/JMeterTreeModel.java
index f6df769cb3..47c4b2403b 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/tree/JMeterTreeModel.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/tree/JMeterTreeModel.java
@@ -185,7 +185,7 @@ public class JMeterTreeModel extends DefaultTreeModel {
     }
 
     @SuppressWarnings("JdkObsolete")
-    private static void traverseAndFind(Class<?> type, JMeterTreeNode node, List<JMeterTreeNode> nodeList) {
+    private static void traverseAndFind(Class<?> type, JMeterTreeNode node, List<? super JMeterTreeNode> nodeList) {
         if (type.isInstance(node.getUserObject())) {
             nodeList.add(node);
         }
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java b/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java
index cef9cd2690..5e8c4e8647 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/util/JMeterMenuBar.java
@@ -563,7 +563,7 @@ public class JMeterMenuBar extends JMenuBar implements LocaleChangeListener {
      * @param menuCreators
      * @param location
      */
-    private static void addPluginsMenuItems(JMenu menu, Collection<MenuCreator> menuCreators, MENU_LOCATION location) {
+    private static void addPluginsMenuItems(JMenu menu, Collection<? extends MenuCreator> menuCreators, MENU_LOCATION location) {
         for (MenuCreator menuCreator : menuCreators) {
             JMenuItem[] menuItems = menuCreator.getMenuItemsAtLocation(location);
             if (menuItems.length != 0) {
diff --git a/src/core/src/main/java/org/apache/jmeter/gui/util/MenuFactory.java b/src/core/src/main/java/org/apache/jmeter/gui/util/MenuFactory.java
index bc84feb916..96fd5ee519 100644
--- a/src/core/src/main/java/org/apache/jmeter/gui/util/MenuFactory.java
+++ b/src/core/src/main/java/org/apache/jmeter/gui/util/MenuFactory.java
@@ -225,14 +225,14 @@ public final class MenuFactory {
         return item;
     }
 
-    private static void sortMenus(Collection<List<MenuInfo>> menus) {
+    private static void sortMenus(Collection<? extends List<MenuInfo>> menus) {
         for (List<MenuInfo> menu : menus) {
             menu.sort(Comparator.comparing(MenuInfo::getLabel));
             menu.sort(Comparator.comparingInt(MenuInfo::getSortOrder));
         }
     }
 
-    private static void separateItemsWithExplicitOrder(Collection<List<MenuInfo>> menus) {
+    private static void separateItemsWithExplicitOrder(Collection<? extends List<MenuInfo>> menus) {
         for (List<MenuInfo> menu : menus) {
             Optional<MenuInfo> firstDefaultSortItem = menu.stream()
                     .filter(info -> info.getSortOrder() == MenuInfo.SORT_ORDER_DEFAULT)
@@ -468,7 +468,7 @@ public final class MenuFactory {
      * @return the menu
      */
     private static JMenu makeMenu(
-            Collection<MenuInfo> menuInfo, String actionCommand, String menuName) {
+            Collection<? extends MenuInfo> menuInfo, String actionCommand, String menuName) {
 
         JMenu menu = new JMenu(menuName);
         menuInfo.stream()
diff --git a/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java b/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
index 1187ebde1a..1291c6627d 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java
@@ -483,7 +483,7 @@ public class ReportGeneratorConfiguration {
      *             thrown when the property cannot be cast to the specified type
      */
     private static <TProperty> TProperty getProperty(Props props, String key,
-            TProperty defaultValue, Class<TProperty> clazz)
+            TProperty defaultValue, @SuppressWarnings("BoundedWildcard") Class<TProperty> clazz)
             throws ConfigurationException {
         String value = props.getValue(key);
         if (value == null) {
diff --git a/src/core/src/main/java/org/apache/jmeter/report/config/SubConfiguration.java b/src/core/src/main/java/org/apache/jmeter/report/config/SubConfiguration.java
index bcdabeef43..39a0ffc3d1 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/config/SubConfiguration.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/config/SubConfiguration.java
@@ -54,7 +54,7 @@ public class SubConfiguration {
      *             if cannot convert property
      */
     public final <TProperty> TProperty getProperty(String key,
-            TProperty defaultValue, Class<TProperty> clazz)
+            TProperty defaultValue, @SuppressWarnings("BoundedWildcard") Class<TProperty> clazz)
                     throws ConfigurationException {
         String value = properties.get(key);
         TProperty result;
diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/JsonExporter.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/JsonExporter.java
index cc9bcf52be..9ad3a0a435 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/JsonExporter.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/JsonExporter.java
@@ -115,7 +115,7 @@ public class JsonExporter extends AbstractDataExporter {
         return outputDir;
     }
 
-    private static void createStatistic(Map<String, SamplingStatistic> statistics, MapResultData resultData) {
+    private static void createStatistic(Map<? super String, ? super SamplingStatistic> statistics, MapResultData resultData) {
         LOGGER.debug("Creating statistics for result data:{}", resultData);
         SamplingStatistic statistic = new SamplingStatistic();
         ListResultData listResultData = (ListResultData) resultData.getResult("data");
diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java
index ec50e47a8e..8c3f9f42e7 100644
--- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java
+++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java
@@ -325,7 +325,7 @@ public class ReportGenerator {
 
     private static void addGraphConsumer(FilterConsumer nameFilter,
             FilterConsumer excludeControllerFilter,
-            Map.Entry<String, GraphConfiguration> entryGraphCfg)
+            Map.Entry<String, ? extends GraphConfiguration> entryGraphCfg)
             throws GenerationException {
         String graphName = entryGraphCfg.getKey();
         GraphConfiguration graphConfiguration = entryGraphCfg.getValue();
diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/AsynchSampleSender.java b/src/core/src/main/java/org/apache/jmeter/samplers/AsynchSampleSender.java
index 5f7a27942b..bd1337150c 100644
--- a/src/core/src/main/java/org/apache/jmeter/samplers/AsynchSampleSender.java
+++ b/src/core/src/main/java/org/apache/jmeter/samplers/AsynchSampleSender.java
@@ -129,11 +129,11 @@ public class AsynchSampleSender extends AbstractSampleSender implements Serializ
 
     private static class Worker extends Thread {
 
-        private final BlockingQueue<SampleEvent> queue;
+        private final BlockingQueue<? extends SampleEvent> queue;
 
         private final RemoteSampleListener listener;
 
-        private Worker(BlockingQueue<SampleEvent> q, RemoteSampleListener l){
+        private Worker(BlockingQueue<? extends SampleEvent> q, RemoteSampleListener l){
             queue = q;
             listener = l;
         }
diff --git a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java
index b0c53ae131..fd96f8bfbb 100644
--- a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java
+++ b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractScopedTestElement.java
@@ -162,12 +162,12 @@ public abstract class AbstractScopedTestElement extends AbstractTestElement {
         return sampleList;
     }
 
-    private static void recurseResults(List<SampleResult> resultList, SampleResult sampleResult) {
+    private static void recurseResults(List<? super SampleResult> resultList, SampleResult sampleResult) {
         Collections.addAll(resultList, sampleResult.getSubResults());
         recurseResults(resultList, sampleResult.getSubResults(), 3);
     }
 
-    private static void recurseResults(List<SampleResult> resultList, SampleResult[] sampleResult, int level) {
+    private static void recurseResults(List<? super SampleResult> resultList, SampleResult[] sampleResult, int level) {
         if (level < 0) {
             return;
         }
diff --git a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
index 3b75649897..439c8711a0 100644
--- a/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
+++ b/src/core/src/main/java/org/apache/jmeter/testelement/AbstractTestElement.java
@@ -660,7 +660,7 @@ public abstract class AbstractTestElement implements TestElement, Serializable,
      * @param result List of values of propertyNames
      * @param propertyNames Set of names of properties to extract
      */
-    protected final void addPropertiesValues(List<String> result, Set<String> propertyNames) {
+    protected final void addPropertiesValues(List<? super String> result, Set<String> propertyNames) {
         PropertyIterator iterator = propertyIterator();
         while(iterator.hasNext()) {
             JMeterProperty jMeterProperty = iterator.next();
diff --git a/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java b/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java
index 0364fcaf0f..f7735d42ac 100644
--- a/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java
+++ b/src/core/src/main/java/org/apache/jmeter/threads/JMeterThread.java
@@ -353,7 +353,7 @@ public class JMeterThread implements Runnable, Interruptible {
      * @param consumer Consumer that will process the tree of elements up to root node
      */
     private void triggerLoopLogicalActionOnParentControllers(Sampler sampler, JMeterContext threadContext,
-            Consumer<FindTestElementsUpToRootTraverser> consumer) {
+            Consumer<? super FindTestElementsUpToRootTraverser> consumer) {
         TransactionSampler transactionSampler = null;
         if (sampler instanceof TransactionSampler) {
             transactionSampler = (TransactionSampler) sampler;
@@ -894,7 +894,7 @@ public class JMeterThread implements Runnable, Interruptible {
         log.info("Stop Thread detected by thread: {}", threadName);
     }
 
-    private static void checkAssertions(List<Assertion> assertions, SampleResult parent, JMeterContext threadContext) {
+    private static void checkAssertions(List<? extends Assertion> assertions, SampleResult parent, JMeterContext threadContext) {
         for (Assertion assertion : assertions) {
             TestBeanHelper.prepare((TestElement) assertion);
             if (assertion instanceof AbstractScopedAssertion) {
@@ -962,14 +962,14 @@ public class JMeterThread implements Runnable, Interruptible {
         result.addAssertionResult(assertionResult);
     }
 
-    private static void runPostProcessors(List<PostProcessor> extractors) {
+    private static void runPostProcessors(List<? extends PostProcessor> extractors) {
         for (PostProcessor ex : extractors) {
             TestBeanHelper.prepare((TestElement) ex);
             ex.process();
         }
     }
 
-    private static void runPreProcessors(List<PreProcessor> preProcessors) {
+    private static void runPreProcessors(List<? extends PreProcessor> preProcessors) {
         for (PreProcessor ex : preProcessors) {
             if (log.isDebugEnabled()) {
                 log.debug("Running preprocessor: {}", ((AbstractTestElement) ex).getName());
@@ -988,7 +988,7 @@ public class JMeterThread implements Runnable, Interruptible {
      *
      * @param timers to be used for calculating the delay
      */
-    private void delay(List<Timer> timers) {
+    private void delay(List<? extends Timer> timers) {
         long totalDelay = 0;
         for (Timer timer : timers) {
             TestBeanHelper.prepare((TestElement) timer);
diff --git a/src/core/src/main/java/org/apache/jmeter/threads/TestCompiler.java b/src/core/src/main/java/org/apache/jmeter/threads/TestCompiler.java
index c3cc460c31..b2c1d7330b 100644
--- a/src/core/src/main/java/org/apache/jmeter/threads/TestCompiler.java
+++ b/src/core/src/main/java/org/apache/jmeter/threads/TestCompiler.java
@@ -270,7 +270,7 @@ public class TestCompiler implements HashTreeTraverser {
      * @param controllers
      * @param maybeController
      */
-    private static void addDirectParentControllers(List<Controller> controllers, TestElement maybeController) {
+    private static void addDirectParentControllers(List<? super Controller> controllers, TestElement maybeController) {
         if (maybeController instanceof Controller) {
             log.debug("adding controller: {} to sampler config", maybeController);
             controllers.add((Controller) maybeController);
@@ -303,7 +303,7 @@ public class TestCompiler implements HashTreeTraverser {
         }
     }
 
-    private static void configureWithConfigElements(Sampler sam, List<ConfigTestElement> configs) {
+    private static void configureWithConfigElements(Sampler sam, List<? extends ConfigTestElement> configs) {
         sam.clearTestElementChildren();
         for (ConfigTestElement config  : configs) {
             if (!(config instanceof NoConfigMerge))
diff --git a/src/core/src/main/java/org/apache/jmeter/util/XPathUtil.java b/src/core/src/main/java/org/apache/jmeter/util/XPathUtil.java
index d183e7da5e..e8deab16eb 100644
--- a/src/core/src/main/java/org/apache/jmeter/util/XPathUtil.java
+++ b/src/core/src/main/java/org/apache/jmeter/util/XPathUtil.java
@@ -359,7 +359,7 @@ public class XPathUtil {
      */
     public static void putValuesForXPathInList(Document document,
             String xPathQuery,
-            List<String> matchStrings, boolean fragment) throws TransformerException {
+            List<? super String> matchStrings, boolean fragment) throws TransformerException {
         putValuesForXPathInList(document, xPathQuery, matchStrings, fragment, -1);
     }
 
@@ -372,7 +372,7 @@ public class XPathUtil {
      * @param matchNumber match number
      * @throws TransformerException when the internally used xpath engine fails
      */
-    public static void putValuesForXPathInList(Document document, String xPathQuery, List<String> matchStrings, boolean fragment, int matchNumber)
+    public static void putValuesForXPathInList(Document document, String xPathQuery, List<? super String> matchStrings, boolean fragment, int matchNumber)
             throws TransformerException {
         String val = null;
         XObject xObject = XPathAPI.eval(document, xPathQuery, getPrefixResolver(document));
@@ -414,7 +414,7 @@ public class XPathUtil {
 
     public static void putValuesForXPathInListUsingSaxon(
             String xmlFile, String xPathQuery,
-            List<String> matchStrings, boolean fragment,
+            List<? super String> matchStrings, boolean fragment,
             int matchNumber, String namespaces)
             throws SaxonApiException, FactoryConfigurationError {
 
diff --git a/src/core/src/main/java/org/apache/jmeter/util/keystore/JmeterKeyStore.java b/src/core/src/main/java/org/apache/jmeter/util/keystore/JmeterKeyStore.java
index 8728409963..e93e720eb4 100644
--- a/src/core/src/main/java/org/apache/jmeter/util/keystore/JmeterKeyStore.java
+++ b/src/core/src/main/java/org/apache/jmeter/util/keystore/JmeterKeyStore.java
@@ -225,7 +225,7 @@ public final class JmeterKeyStore {
         }
     }
 
-    private static String decodeSanList(Collection<List<?>> subjectAlternativeNames) {
+    private static String decodeSanList(Collection<? extends List<?>> subjectAlternativeNames) {
         List<Pair<String, String>> decodedEntries = new ArrayList<>();
         for (List<?> entry : subjectAlternativeNames) {
             Object indexData = entry.get(0);
diff --git a/src/functions/src/main/java/org/apache/jmeter/functions/RandomFromMultipleVars.java b/src/functions/src/main/java/org/apache/jmeter/functions/RandomFromMultipleVars.java
index 897fd48f11..ff5554de5d 100644
--- a/src/functions/src/main/java/org/apache/jmeter/functions/RandomFromMultipleVars.java
+++ b/src/functions/src/main/java/org/apache/jmeter/functions/RandomFromMultipleVars.java
@@ -112,7 +112,7 @@ public class RandomFromMultipleVars extends AbstractFunction {
      * @param results {@link List} where results are stored
      */
     private static void extractVariableValuesToList(String variableName,
-            JMeterVariables vars, List<String> results) {
+            JMeterVariables vars, List<? super String> results) {
         String matchNumberAsStr = vars.get(variableName+"_matchNr");
         int matchNumber = 0;
         if(!StringUtils.isEmpty(matchNumberAsStr)) {
diff --git a/src/jorphan/src/main/java/org/apache/jorphan/collections/HashTree.java b/src/jorphan/src/main/java/org/apache/jorphan/collections/HashTree.java
index 8d3879e7b0..1dd9bda9ce 100644
--- a/src/jorphan/src/main/java/org/apache/jorphan/collections/HashTree.java
+++ b/src/jorphan/src/main/java/org/apache/jorphan/collections/HashTree.java
@@ -93,7 +93,7 @@ public class HashTree implements Serializable, Map<Object, HashTree>, Cloneable
      *            the object to be used as the key for the root node (may be
      *            <code>null</code>, in which case no root node will be created)
      */
-    private HashTree(Map<Object, HashTree> _map, Object key) {
+    private HashTree(Map<Object, ? extends HashTree> _map, Object key) {
         if(_map != null) {
             if (_map instanceof IdentityHashMap) {
                 data = (IdentityHashMap<Object, HashTree>) _map;
diff --git a/src/jorphan/src/main/java/org/apache/jorphan/gui/DynamicStyle.java b/src/jorphan/src/main/java/org/apache/jorphan/gui/DynamicStyle.java
index 7fb01971e6..41511488a7 100644
--- a/src/jorphan/src/main/java/org/apache/jorphan/gui/DynamicStyle.java
+++ b/src/jorphan/src/main/java/org/apache/jorphan/gui/DynamicStyle.java
@@ -60,7 +60,7 @@ public class DynamicStyle {
      * @return input component (e.g. for fluent APIs)
      */
     @API(since = "5.3", status = API.Status.EXPERIMENTAL)
-    public <T extends JComponent> T withDynamic(T component, Consumer<T> onUpdateUi) {
+    public <T extends JComponent> T withDynamic(T component, Consumer<? super T> onUpdateUi) {
         // Explicit component update is required since the component already exists
         // and we can't want to wait for the next LaF change
         onUpdateUi.accept(component);
@@ -183,7 +183,7 @@ public class DynamicStyle {
         }
     }
 
-    private static void collectComponents(Component root, List<Component> components) {
+    private static void collectComponents(Component root, List<? super Component> components) {
         if (root == null) {
             // E.g. getTabComponentAt might return null
             // https://stackoverflow.com/questions/988734/jtabbedpane-gettabcomponentatint-returning-null
diff --git a/src/jorphan/src/main/java/org/apache/jorphan/gui/JFactory.java b/src/jorphan/src/main/java/org/apache/jorphan/gui/JFactory.java
index 99e9463451..3c54558d55 100644
--- a/src/jorphan/src/main/java/org/apache/jorphan/gui/JFactory.java
+++ b/src/jorphan/src/main/java/org/apache/jorphan/gui/JFactory.java
@@ -172,7 +172,7 @@ public class JFactory {
      * @return input component (e.g. for fluent APIs)
      */
     @API(since = "5.3", status = API.Status.EXPERIMENTAL)
-    public static <T extends JComponent> T withDynamic(T component, Consumer<T> onUpdateUi) {
+    public static <T extends JComponent> T withDynamic(T component, Consumer<? super T> onUpdateUi) {
         return STYLE.withDynamic(component, onUpdateUi);
     }
 
diff --git a/src/jorphan/src/main/java/org/apache/jorphan/gui/JMeterUIDefaults.java b/src/jorphan/src/main/java/org/apache/jorphan/gui/JMeterUIDefaults.java
index 85b9b7feec..b8e98da783 100644
--- a/src/jorphan/src/main/java/org/apache/jorphan/gui/JMeterUIDefaults.java
+++ b/src/jorphan/src/main/java/org/apache/jorphan/gui/JMeterUIDefaults.java
@@ -150,11 +150,11 @@ public class JMeterUIDefaults {
         addDerivedFont(defaults, output, input, f -> f.deriveFont(f.getSize2D() * scale));
     }
 
-    private static void addDerivedFont(UIDefaults defaults, String output, String input, Function<Font, Font> f) {
+    private static void addDerivedFont(UIDefaults defaults, String output, String input, Function<? super Font, ? extends Font> f) {
         defaults.put(output, (UIDefaults.LazyValue) d -> map(d.getFont(input), f));
     }
 
-    private static Font map(Font input, Function<Font, Font> mapper) {
+    private static Font map(Font input, Function<? super Font, ? extends Font> mapper) {
         Font output = mapper.apply(input);
         // Note: we drop UIResource here so LaF treats the font as user-provided rather than
         // LaF-provided.
diff --git a/src/jorphan/src/main/java/org/apache/jorphan/reflect/ClassFinder.java b/src/jorphan/src/main/java/org/apache/jorphan/reflect/ClassFinder.java
index 35babc7c5c..cc96f91ebf 100644
--- a/src/jorphan/src/main/java/org/apache/jorphan/reflect/ClassFinder.java
+++ b/src/jorphan/src/main/java/org/apache/jorphan/reflect/ClassFinder.java
@@ -469,7 +469,7 @@ public final class ClassFinder {
     }
 
 
-    private static void findClassesInOnePath(File file, Set<String> listClasses, ClassFilter filter) {
+    private static void findClassesInOnePath(File file, Set<? super String> listClasses, ClassFilter filter) {
         if (file.isDirectory()) {
             findClassesInPathsDir(file.getAbsolutePath(), file, listClasses, filter);
         } else if (file.exists()) {
@@ -500,7 +500,7 @@ public final class ClassFinder {
     }
 
 
-    private static void findClassesInPathsDir(String strPathElement, File dir, Set<String> listClasses, ClassFilter filter) {
+    private static void findClassesInPathsDir(String strPathElement, File dir, Set<? super String> listClasses, ClassFilter filter) {
         File[] list = dir.listFiles();
         if (list == null) {
             log.warn("{} is not a folder", dir.getAbsolutePath());
@@ -528,7 +528,7 @@ public final class ClassFinder {
      * @param filter {@link ClassFilter}
      * @param className Full class name
      */
-    private static void applyFiltering(Set<String> classesSet, ClassFilter filter, String className) {
+    private static void applyFiltering(Set<? super String> classesSet, ClassFilter filter, String className) {
         try {
             if (filter.accept(className)) {
                 classesSet.add(className);
diff --git a/src/jorphan/src/main/java/org/apache/jorphan/util/JOrphanUtils.java b/src/jorphan/src/main/java/org/apache/jorphan/util/JOrphanUtils.java
index 27f583cd17..8120ef25fd 100644
--- a/src/jorphan/src/main/java/org/apache/jorphan/util/JOrphanUtils.java
+++ b/src/jorphan/src/main/java/org/apache/jorphan/util/JOrphanUtils.java
@@ -718,7 +718,7 @@ public final class JOrphanUtils {
      * @param setter        that gets called with the replaced value
      * @return number of matches that were replaced
      */
-    public static int replaceValue(String regex, String replaceBy, boolean caseSensitive, String value, Consumer<String> setter) {
+    public static int replaceValue(String regex, String replaceBy, boolean caseSensitive, String value, Consumer<? super String> setter) {
         if (StringUtils.isBlank(value)) {
             return 0;
         }
diff --git a/src/launcher/src/main/java/org/apache/jmeter/NewDriver.java b/src/launcher/src/main/java/org/apache/jmeter/NewDriver.java
index 95a5350154..1e2a771584 100644
--- a/src/launcher/src/main/java/org/apache/jmeter/NewDriver.java
+++ b/src/launcher/src/main/java/org/apache/jmeter/NewDriver.java
@@ -268,7 +268,7 @@ public final class NewDriver {
      * @param exceptionsInInit List of {@link Exception}
      * @return String
      */
-    private static String exceptionsToString(List<Exception> exceptionsInInit) {
+    private static String exceptionsToString(List<? extends Exception> exceptionsInInit) {
         StringBuilder builder = new StringBuilder();
         for (Exception exception : exceptionsInInit) {
             StringWriter stringWriter = new StringWriter();
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/DNSCacheManager.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/DNSCacheManager.java
index 931893dc1c..22ed001a72 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/DNSCacheManager.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/control/DNSCacheManager.java
@@ -226,7 +226,7 @@ public class DNSCacheManager extends ConfigTestElement implements TestIterationL
         return new InetAddress[0];
     }
 
-    private static void addAsLiteralAddress(List<InetAddress> addresses, String address) {
+    private static void addAsLiteralAddress(List<? super InetAddress> addresses, String address) {
         try {
             addresses.add(InetAddress.getByName(address));
         } catch (UnknownHostException e) {
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java
index 32b6b04a78..40846bfaec 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java
@@ -137,7 +137,7 @@ public class AnchorModifier extends AbstractTestElement implements PreProcessor,
     }
 
     private static void addFormUrls(Document html, HTTPSampleResult result, HTTPSamplerBase config,
-            List<HTTPSamplerBase> potentialLinks) {
+            List<? super HTTPSamplerBase> potentialLinks) {
         NodeList rootList = html.getChildNodes();
         List<HTTPSamplerBase> urls = new ArrayList<>();
         for (int x = 0; x < rootList.getLength(); x++) {
@@ -156,7 +156,7 @@ public class AnchorModifier extends AbstractTestElement implements PreProcessor,
     }
 
     private static void addAnchorUrls(Document html, HTTPSampleResult result, HTTPSamplerBase config,
-            List<HTTPSamplerBase> potentialLinks) {
+            List<? super HTTPSamplerBase> potentialLinks) {
         String base = "";
         NodeList baseList = html.getElementsByTagName("base"); // $NON-NLS-1$
         if (baseList.getLength() > 0) {
@@ -191,7 +191,7 @@ public class AnchorModifier extends AbstractTestElement implements PreProcessor,
     }
 
     private static void addFramesetUrls(Document html, HTTPSampleResult result,
-            HTTPSamplerBase config, List<HTTPSamplerBase> potentialLinks) {
+            HTTPSamplerBase config, List<? super HTTPSamplerBase> potentialLinks) {
        String base = "";
        NodeList baseList = html.getElementsByTagName("base"); // $NON-NLS-1$
        if (baseList.getLength() > 0) {
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/parser/URLCollection.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/parser/URLCollection.java
index dfd9b526b0..6a68dd2070 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/parser/URLCollection.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/parser/URLCollection.java
@@ -105,9 +105,9 @@ public class URLCollection implements Iterable<URL> {
      * Private iterator used to unwrap the URL from the URLString class
      */
     private static class UrlIterator implements Iterator<URL> {
-        private final Iterator<URLString> iter;
+        private final Iterator<? extends URLString> iter;
 
-        UrlIterator(Iterator<URLString> i) {
+        UrlIterator(Iterator<? extends URLString> i) {
             iter = i;
         }
 
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/FormCharSetFinder.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/FormCharSetFinder.java
index d577f32028..936807905d 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/FormCharSetFinder.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/FormCharSetFinder.java
@@ -48,7 +48,7 @@ public class FormCharSetFinder {
      * @param pageEncoding the encoding used for the whole page
      * @throws HTMLParseException when parsing the <code>html</code> fails
      */
-    public void addFormActionsAndCharSet(String html, Map<String, String> formEncodings, String pageEncoding)
+    public void addFormActionsAndCharSet(String html, Map<? super String, ? super String> formEncodings, String pageEncoding)
             throws HTMLParseException {
         log.debug("Parsing html of: {}", html);
 
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
index 421cc975cd..9b5a6623c9 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
@@ -1324,7 +1324,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
      * @param sampler        Sampler to remove values from.
      * @param configurations ConfigTestElements in descending priority.
      */
-    private static void removeValuesFromSampler(HTTPSamplerBase sampler, Collection<ConfigTestElement> configurations) {
+    private static void removeValuesFromSampler(HTTPSamplerBase sampler, Collection<? extends ConfigTestElement> configurations) {
         PropertyIterator props = sampler.propertyIterator();
         while (props.hasNext()) {
             JMeterProperty prop = props.next();
@@ -1414,7 +1414,7 @@ public class ProxyControl extends GenericController implements NonTestElement {
      * @param variables Collection of Arguments to use to do the replacement, ordered
      *                  by ascending priority.
      */
-    private void replaceValues(TestElement sampler, TestElement[] configs, Collection<Arguments> variables) {
+    private void replaceValues(TestElement sampler, TestElement[] configs, Collection<? extends Arguments> variables) {
         // Build the replacer from all the variables in the collection:
         ValueReplacer replacer = new ValueReplacer();
         for (Arguments variable : variables) {
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
index 8f7e624bd9..b338faef4e 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
@@ -772,7 +772,7 @@ public class HTTPHC4Impl extends HTTPHCAbstractImpl {
      * @param localContext {@link HttpContext}
      */
     private static void saveProxyAuth(
-            MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager> triple,
+            MutableTriple<CloseableHttpClient, ? super AuthState, PoolingHttpClientConnectionManager> triple,
             HttpContext localContext) {
         triple.setMiddle((AuthState) localContext.getAttribute(HttpClientContext.PROXY_AUTH_STATE));
     }
@@ -782,7 +782,7 @@ public class HTTPHC4Impl extends HTTPHCAbstractImpl {
      * @param triple {@link MutableTriple} May be null if first request
      * @param localContext {@link HttpContext}
      */
-    private static void setupProxyAuthState(MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager> triple,
+    private static void setupProxyAuthState(MutableTriple<CloseableHttpClient, ? extends AuthState, PoolingHttpClientConnectionManager> triple,
             HttpContext localContext) {
         if (triple != null) {
             AuthState proxyAuthState = triple.getMiddle();
@@ -1227,7 +1227,7 @@ public class HTTPHC4Impl extends HTTPHCAbstractImpl {
             MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager> triple,
             JMeterVariables jMeterVariables,
             HttpClientContext clientContext,
-            Map<HttpClientKey, MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager>> mapHttpClientPerHttpClientKey) {
+            Map<HttpClientKey, ? extends MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager>> mapHttpClientPerHttpClientKey) {
         if (resetStateOnThreadGroupIteration.get()) {
             closeCurrentConnections(mapHttpClientPerHttpClientKey);
             clientContext.removeAttribute(HttpClientContext.USER_TOKEN);
@@ -1245,7 +1245,7 @@ public class HTTPHC4Impl extends HTTPHCAbstractImpl {
      * @param mapHttpClientPerHttpClientKey
      */
     private static void closeCurrentConnections(
-            Map<HttpClientKey, MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager>> mapHttpClientPerHttpClientKey) {
+            Map<HttpClientKey, ? extends MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager>> mapHttpClientPerHttpClientKey) {
         for (MutableTriple<CloseableHttpClient, AuthState, PoolingHttpClientConnectionManager> triple :
                 mapHttpClientPerHttpClientKey.values()) {
             PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = triple.getRight();
@@ -1483,7 +1483,7 @@ public class HTTPHC4Impl extends HTTPHCAbstractImpl {
      * @param method <code>HttpMethod</code> which represents the request
      * @return the headers as a string
      */
-    private static String getFromHeadersMatchingPredicate(HttpRequest method, Predicate<String> predicate) {
+    private static String getFromHeadersMatchingPredicate(HttpRequest method, Predicate<? super String> predicate) {
         if(method != null) {
             // Get all the request headers
             StringBuilder hdrs = new StringBuilder(150);
diff --git a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
index 22bb7a7e30..46936887d8 100644
--- a/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
+++ b/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
@@ -425,7 +425,7 @@ public class HTTPJavaImpl extends HTTPAbstractImpl {
      * @return the headers as a string
      */
     private static String getFromConnectionHeaders(HttpURLConnection conn, Map<String, String> securityHeaders,
-            Predicate<String> predicate, boolean addSecurityHeaders) {
+            Predicate<? super String> predicate, boolean addSecurityHeaders) {
         // Get all the request properties, which are the headers set on the connection
         StringBuilder hdrs = new StringBuilder(100);
         Map<String, List<String>> requestHeaders = conn.getRequestProperties();
diff --git a/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java b/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java
index b9d8d99e82..b464a20e56 100644
--- a/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java
+++ b/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java
@@ -583,7 +583,7 @@ public abstract class AbstractJDBCTestElement extends AbstractTestElement implem
     }
 
     private static int processRow(ResultSet rs, ResultSetMetaData meta, StringBuilder sb, int numColumns,
-            JMeterVariables jmvars, String[] varNames, List<Map<String, Object>> results, int currentIterationIndex)
+            JMeterVariables jmvars, String[] varNames, List<? super Map<String, Object>> results, int currentIterationIndex)
             throws SQLException, UnsupportedEncodingException {
         Map<String, Object> row = null;
         currentIterationIndex++;
diff --git a/src/protocol/ldap/src/main/java/org/apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java b/src/protocol/ldap/src/main/java/org/apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java
index 8d827792b3..ce490d0c26 100644
--- a/src/protocol/ldap/src/main/java/org/apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java
+++ b/src/protocol/ldap/src/main/java/org/apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java
@@ -880,7 +880,7 @@ public class LDAPExtSampler extends AbstractSampler implements TestStateListener
      * unless the number of results exceeds {@link #MAX_SORTED_RESULTS} in which case just stream
      * the results out without sorting.
      */
-    private void writeSearchResults(final XMLBuffer xmlb, final NamingEnumeration<SearchResult> srch)
+    private void writeSearchResults(final XMLBuffer xmlb, final NamingEnumeration<? extends SearchResult> srch)
             throws NamingException
     {
 
@@ -955,7 +955,7 @@ public class LDAPExtSampler extends AbstractSampler implements TestStateListener
         }
     }
 
-    private static void sortAttributes(final List<Attribute> sortedAttrs) {
+    private static void sortAttributes(final List<? extends Attribute> sortedAttrs) {
         sortedAttrs.sort((o1, o2) -> {
             String nm1 = o1.getID();
             String nm2 = o2.getID();
@@ -964,7 +964,7 @@ public class LDAPExtSampler extends AbstractSampler implements TestStateListener
         });
     }
 
-    private static void sortResults(final List<SearchResult> sortedResults) {
+    private static void sortResults(final List<? extends SearchResult> sortedResults) {
         sortedResults.sort(new Comparator<SearchResult>() {
             private int compareToReverse(final String s1, final String s2) {
                 int len1 = s1.length();
diff --git a/src/protocol/mail/src/main/java/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java b/src/protocol/mail/src/main/java/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
index 60c6aff2ff..3ac30303d2 100644
--- a/src/protocol/mail/src/main/java/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
+++ b/src/protocol/mail/src/main/java/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
@@ -333,7 +333,7 @@ public class SmtpSampler extends AbstractSampler {
     }
 
     @SuppressWarnings("JdkObsolete")
-    private static void writeHeaders(Enumeration<Header> headers, StringBuilder sb) {
+    private static void writeHeaders(Enumeration<? extends Header> headers, StringBuilder sb) {
         while (headers.hasMoreElements()) {
             Header header = headers.nextElement();
             sb.append(header.getName());