JDK7 migration: Collapse identical catch blocks
diff --git a/src/main/java/org/testng/TestNG.java b/src/main/java/org/testng/TestNG.java
index 06e1ddf..927d61b 100644
--- a/src/main/java/org/testng/TestNG.java
+++ b/src/main/java/org/testng/TestNG.java
@@ -282,15 +282,7 @@
                     cSuite.setParentSuite(s);
                     s.getChildSuites().add(cSuite);
                 }
-            }
-            catch(FileNotFoundException e) {
-                e.printStackTrace(System.out);
-            }
-            catch (ParserConfigurationException e) {
-                e.printStackTrace(System.out);
-            } catch (SAXException e) {
-                e.printStackTrace(System.out);
-            } catch (IOException e) {
+            } catch (ParserConfigurationException | IOException | SAXException e) {
                 e.printStackTrace(System.out);
             }
         }
@@ -319,19 +311,9 @@
           }
         }
       }
-      catch(FileNotFoundException e) {
+      catch(SAXException | ParserConfigurationException | IOException e) {
         e.printStackTrace(System.out);
-      }
-      catch(IOException e) {
-        e.printStackTrace(System.out);
-      }
-      catch(ParserConfigurationException e) {
-        e.printStackTrace(System.out);
-      }
-      catch(SAXException e) {
-        e.printStackTrace(System.out);
-      }
-      catch(Exception ex) {
+      } catch(Exception ex) {
         // Probably a Yaml exception, unnest it
         Throwable t = ex;
         while (t.getCause() != null) t = t.getCause();
@@ -400,13 +382,7 @@
         m_suites.add(xmlSuite);
       }
     }
-    catch(ParserConfigurationException ex) {
-      ex.printStackTrace();
-    }
-    catch(SAXException ex) {
-      ex.printStackTrace();
-    }
-    catch(IOException ex) {
+    catch(ParserConfigurationException | IOException | SAXException ex) {
       ex.printStackTrace();
     }
   }
diff --git a/src/main/java/org/testng/internal/InvokeMethodRunnable.java b/src/main/java/org/testng/internal/InvokeMethodRunnable.java
index 2a00bf2..51dde5b 100644
--- a/src/main/java/org/testng/internal/InvokeMethodRunnable.java
+++ b/src/main/java/org/testng/internal/InvokeMethodRunnable.java
@@ -45,10 +45,7 @@
         Method m = m_method.getMethod();
         MethodInvocationHelper.invokeMethod(m, m_instance, m_parameters);
       }
-      catch(InvocationTargetException e) {
-        t = new TestNGRuntimeException(e.getCause());
-      }
-      catch(IllegalAccessException e) {
+      catch(InvocationTargetException | IllegalAccessException e) {
         t = new TestNGRuntimeException(e.getCause());
       }
       if(null != t) {
diff --git a/src/main/java/org/testng/internal/Invoker.java b/src/main/java/org/testng/internal/Invoker.java
index 14fb401..97009f8 100644
--- a/src/main/java/org/testng/internal/Invoker.java
+++ b/src/main/java/org/testng/internal/Invoker.java
@@ -235,13 +235,7 @@
       }
       catch(InvocationTargetException ex) {
         handleConfigurationFailure(ex, tm, testResult, configurationAnnotation, currentTestMethod, instance, suite);
-      }
-      catch(TestNGException ex) {
-        // Don't wrap TestNGExceptions, it could be a missing parameter on a
-        // @Configuration method
-        handleConfigurationFailure(ex, tm, testResult, configurationAnnotation, currentTestMethod, instance, suite);
-      }
-      catch(Throwable ex) { // covers the non-wrapper exceptions
+      } catch(Throwable ex) { // covers the non-wrapper exceptions
         handleConfigurationFailure(ex, tm, testResult, configurationAnnotation, currentTestMethod, instance, suite);
       }
     } // for methods
@@ -530,19 +524,10 @@
           }
         }
       }
-      catch (InvocationTargetException ex) {
+      catch (InvocationTargetException | IllegalAccessException ex) {
        throwConfigurationFailure(testResult, ex);
        throw ex;
-      }
-      catch (IllegalAccessException ex) {
-        throwConfigurationFailure(testResult, ex);
-        throw ex;
-      }
-      catch (NoSuchMethodException ex) {
-        throwConfigurationFailure(testResult, ex);
-        throw new TestNGException(ex);
-      }
-      catch (Throwable ex) {
+      } catch (Throwable ex) {
         throwConfigurationFailure(testResult, ex);
         throw new TestNGException(ex);
       }
diff --git a/src/main/java/org/testng/internal/MethodInvocationHelper.java b/src/main/java/org/testng/internal/MethodInvocationHelper.java
index 9e1665e..8720d23 100644
--- a/src/main/java/org/testng/internal/MethodInvocationHelper.java
+++ b/src/main/java/org/testng/internal/MethodInvocationHelper.java
@@ -156,11 +156,7 @@
         throw new TestNGException("Data Provider " + dataProvider + " must return"

             + " either Object[][] or Iterator<Object>[], not " + returnType);

       }

-    } catch (InvocationTargetException e) {

-      // Don't throw TestNGException here or this test won't be reported as a

-      // skip or failure

-      throw new RuntimeException(e.getCause());

-    } catch (IllegalAccessException e) {

+    } catch (InvocationTargetException | IllegalAccessException e) {

       // Don't throw TestNGException here or this test won't be reported as a

       // skip or failure

       throw new RuntimeException(e.getCause());

diff --git a/src/main/java/org/testng/internal/PoolService.java b/src/main/java/org/testng/internal/PoolService.java
index 0154cb0..5e65f46 100755
--- a/src/main/java/org/testng/internal/PoolService.java
+++ b/src/main/java/org/testng/internal/PoolService.java
@@ -47,9 +47,7 @@
       try {
         Future<FutureType> take = m_completionService.take();
         result.add(take.get());
-      } catch (InterruptedException e) {
-        throw new TestNGException(e);
-      } catch (ExecutionException e) {
+      } catch (InterruptedException | ExecutionException e) {
         throw new TestNGException(e);
       }
     }
diff --git a/src/main/java/org/testng/internal/PropertyUtils.java b/src/main/java/org/testng/internal/PropertyUtils.java
index 5275232..ba69110 100755
--- a/src/main/java/org/testng/internal/PropertyUtils.java
+++ b/src/main/java/org/testng/internal/PropertyUtils.java
@@ -79,10 +79,8 @@
     Method method = propDesc.getWriteMethod();
     try {
       method.invoke(instance, new Object[]{value});
-    } catch (IllegalAccessException iae) {
+    } catch (IllegalAccessException | InvocationTargetException iae) {
       LOGGER.warn("Cannot set property " + name + " with value " + value + ". Cause " + iae);
-    } catch (InvocationTargetException ite) {
-      LOGGER.warn("Cannot set property " + name + " with value " + value + ". Cause " + ite);
     }
   }
 
diff --git a/src/main/java/org/testng/internal/Utils.java b/src/main/java/org/testng/internal/Utils.java
index 82d4c5d..099931f 100644
--- a/src/main/java/org/testng/internal/Utils.java
+++ b/src/main/java/org/testng/internal/Utils.java
@@ -441,12 +441,9 @@
       fh.setLevel(Level.INFO);
       logger.addHandler(fh);
     }
-    catch (SecurityException se) {
+    catch (SecurityException | IOException se) {
       se.printStackTrace();
     }
-    catch (IOException ioe) {
-      ioe.printStackTrace();
-    }
   }
 
   public static void logInvocation(String reason, Method thisMethod, Object[] parameters) {
@@ -760,11 +757,7 @@
       }
       in.close();
       out.close();
-    }
-    catch(FileNotFoundException ex){
-      ex.printStackTrace();
-    }
-    catch(IOException e){
+    } catch(IOException e){
       e.printStackTrace();
     }
   }
diff --git a/src/main/java/org/testng/internal/annotations/TestAnnotation.java b/src/main/java/org/testng/internal/annotations/TestAnnotation.java
index 965e6aa..19612a9 100755
--- a/src/main/java/org/testng/internal/annotations/TestAnnotation.java
+++ b/src/main/java/org/testng/internal/annotations/TestAnnotation.java
@@ -179,10 +179,7 @@
       try {

         m_retryAnalyzer = (IRetryAnalyzer) c.newInstance();

       }

-      catch (InstantiationException e) {

-        // The class will never be called.

-      }

-      catch (IllegalAccessException e) {

+      catch (InstantiationException | IllegalAccessException e) {

         // The class will never be called.

       }

     }

diff --git a/src/main/java/org/testng/junit/JUnitMethodFinder.java b/src/main/java/org/testng/junit/JUnitMethodFinder.java
index e90dffe..cdc6ae7 100755
--- a/src/main/java/org/testng/junit/JUnitMethodFinder.java
+++ b/src/main/java/org/testng/junit/JUnitMethodFinder.java
@@ -38,10 +38,7 @@
     try {
       result = cls.getConstructor(parameters);
     }
-    catch (SecurityException ex) {
-      // ignore
-    }
-    catch (NoSuchMethodException ex) {
+    catch (SecurityException | NoSuchMethodException ex) {
       // ignore
     }
 
@@ -119,25 +116,12 @@
         result = ctor.newInstance(new Object[0]);
       }
     }
-    catch (IllegalArgumentException ex) {
+    catch (IllegalArgumentException | NoSuchMethodException | InvocationTargetException | IllegalAccessException | SecurityException ex) {
       ex.printStackTrace();
-    }
-    catch (SecurityException ex) {
-      ex.printStackTrace();
-    }
-    catch (InstantiationException ex) {
+    } catch (InstantiationException ex) {
       System.err.println("Couldn't find a constructor with a String parameter on your JUnit test class.");
       ex.printStackTrace();
     }
-    catch (IllegalAccessException ex) {
-      ex.printStackTrace();
-    }
-    catch (InvocationTargetException ex) {
-      ex.printStackTrace();
-    }
-    catch (NoSuchMethodException ex) {
-      ex.printStackTrace();
-    }
 
     return result;
   }
diff --git a/src/main/java/org/testng/mustache/Model.java b/src/main/java/org/testng/mustache/Model.java
index 9a58171..1607020 100644
--- a/src/main/java/org/testng/mustache/Model.java
+++ b/src/main/java/org/testng/mustache/Model.java
@@ -50,11 +50,7 @@
       try {
         Field f = cls.getField(variable);
         return new Value(f.get(object));
-      } catch (IllegalAccessException e) {
-//        e.printStackTrace();
-      } catch (SecurityException e) {
-//        e.printStackTrace();
-      } catch (NoSuchFieldException e) {
+      } catch (IllegalAccessException | NoSuchFieldException | SecurityException e) {
 //        e.printStackTrace();
       }
 //    }
diff --git a/src/main/java/org/testng/remote/adapter/DefaultMastertAdapter.java b/src/main/java/org/testng/remote/adapter/DefaultMastertAdapter.java
index fcc5c5c..ee20185 100755
--- a/src/main/java/org/testng/remote/adapter/DefaultMastertAdapter.java
+++ b/src/main/java/org/testng/remote/adapter/DefaultMastertAdapter.java
@@ -49,13 +49,9 @@
 			try {

 				sockets[i] = new Socket(s[0], Integer.parseInt(s[1]));

 			}

-			catch (NumberFormatException e) {

+			catch (NumberFormatException | UnknownHostException e) {

 				e.printStackTrace(System.out);

-			}

-			catch (UnknownHostException e) {

-				e.printStackTrace(System.out);

-			}

-			catch (IOException e) {

+			} catch (IOException e) {

 				Utils.error("Couldn't connect to " + host + ": " + e.getMessage());

 			}

 		}

diff --git a/src/main/java/org/testng/remote/strprotocol/StringMessageSender.java b/src/main/java/org/testng/remote/strprotocol/StringMessageSender.java
index 3752160..c924edd 100644
--- a/src/main/java/org/testng/remote/strprotocol/StringMessageSender.java
+++ b/src/main/java/org/testng/remote/strprotocol/StringMessageSender.java
@@ -91,11 +91,7 @@
 //        m_outputWriter = new PrintWriter(new OutputStreamWriter(fSocket.getOutputStream()), true);
 //      }
       result = receiveMessage(m_inReader.readLine());
-    }
-    catch(SocketException e) {
-      handleThrowable(e);
-    }
-    catch(IOException e) {
+    } catch(IOException e) {
       handleThrowable(e);
     }
 
diff --git a/src/main/java/org/testng/xml/ResultXMLParser.java b/src/main/java/org/testng/xml/ResultXMLParser.java
index b93e7d0..b3f5d14 100644
--- a/src/main/java/org/testng/xml/ResultXMLParser.java
+++ b/src/main/java/org/testng/xml/ResultXMLParser.java
@@ -43,12 +43,7 @@
       parse(inputStream, handler);
 
       return null;
-    }
-    catch (FileNotFoundException e) {
-      throw new TestNGException(e);
-    } catch (SAXException e) {
-      throw new TestNGException(e);
-    } catch (IOException e) {
+    } catch (SAXException | IOException e) {
       throw new TestNGException(e);
     }
   }
diff --git a/src/main/java/org/testng/xml/SuiteXmlParser.java b/src/main/java/org/testng/xml/SuiteXmlParser.java
index f746f82..38ebfdc 100644
--- a/src/main/java/org/testng/xml/SuiteXmlParser.java
+++ b/src/main/java/org/testng/xml/SuiteXmlParser.java
@@ -17,12 +17,7 @@
       parse(inputStream, contentHandler);
 
       return contentHandler.getSuite();
-    }
-    catch (FileNotFoundException e) {
-      throw new TestNGException(e);
-    } catch (SAXException e) {
-      throw new TestNGException(e);
-    } catch (IOException e) {
+    } catch (SAXException | IOException e) {
       throw new TestNGException(e);
     }
   }
diff --git a/src/main/java/org/testng/xml/XMLParser.java b/src/main/java/org/testng/xml/XMLParser.java
index 6afb5c8..97ea8c8 100644
--- a/src/main/java/org/testng/xml/XMLParser.java
+++ b/src/main/java/org/testng/xml/XMLParser.java
@@ -26,9 +26,7 @@
     SAXParser parser = null;
     try {
       parser = spf.newSAXParser();
-    } catch (ParserConfigurationException e) {
-      e.printStackTrace();
-    } catch (SAXException e) {
+    } catch (ParserConfigurationException | SAXException e) {
       e.printStackTrace();
     }
     m_saxParser = parser;
diff --git a/src/main/java/org/testng/xml/dom/DomUtil.java b/src/main/java/org/testng/xml/dom/DomUtil.java
index ca9d272..158f776 100644
--- a/src/main/java/org/testng/xml/dom/DomUtil.java
+++ b/src/main/java/org/testng/xml/dom/DomUtil.java
@@ -252,11 +252,7 @@
         } else {
           foundMethod.invoke(object, value.toString());
         }
-      } catch (IllegalArgumentException e) {
-        e.printStackTrace();
-      } catch (IllegalAccessException e) {
-        e.printStackTrace();
-      } catch (InvocationTargetException e) {
+      } catch (IllegalArgumentException | InvocationTargetException | IllegalAccessException e) {
         e.printStackTrace();
       }
     }
diff --git a/src/main/java/org/testng/xml/dom/XDom.java b/src/main/java/org/testng/xml/dom/XDom.java
index 3bffb89..a0afb16 100644
--- a/src/main/java/org/testng/xml/dom/XDom.java
+++ b/src/main/java/org/testng/xml/dom/XDom.java
@@ -180,13 +180,7 @@
     for (Pair<Method, Wrapper> pair : pairs) {
       try {
         pair.first().invoke(bean, child.getTextContent());
-      } catch (IllegalArgumentException e) {
-        e.printStackTrace();
-      } catch (DOMException e) {
-        e.printStackTrace();
-      } catch (IllegalAccessException e) {
-        e.printStackTrace();
-      } catch (InvocationTargetException e) {
+      } catch (IllegalArgumentException | InvocationTargetException | IllegalAccessException | DOMException e) {
         e.printStackTrace();
       }
     }
@@ -215,9 +209,7 @@
       } catch (IllegalArgumentException e) {
         System.out.println("Parameters: " + allParameters);
         e.printStackTrace();
-      } catch (IllegalAccessException e) {
-        e.printStackTrace();
-      } catch (InvocationTargetException e) {
+      } catch (IllegalAccessException | InvocationTargetException e) {
         e.printStackTrace();
       }
     }
@@ -247,11 +239,7 @@
         } else {
           foundMethod.invoke(object, value);
         }
-      } catch (IllegalArgumentException e) {
-        e.printStackTrace();
-      } catch (IllegalAccessException e) {
-        e.printStackTrace();
-      } catch (InvocationTargetException e) {
+      } catch (IllegalArgumentException | InvocationTargetException | IllegalAccessException e) {
         e.printStackTrace();
       }
     } else {
diff --git a/src/test/java/test/BaseTest.java b/src/test/java/test/BaseTest.java
index 2d63eb8..c4c0733 100644
--- a/src/test/java/test/BaseTest.java
+++ b/src/test/java/test/BaseTest.java
@@ -413,11 +413,7 @@
           line = fr.readLine();

           currentLine++;

         }

-      }

-      catch(FileNotFoundException e) {

-        e.printStackTrace();

-      }

-      catch(IOException e) {

+      } catch(IOException e) {

         e.printStackTrace();

       }

       finally {