diff --git a/src/org/testng/Reporter.java b/src/org/testng/Reporter.java
index a7aae99..0c58a97 100755
--- a/src/org/testng/Reporter.java
+++ b/src/org/testng/Reporter.java
@@ -52,7 +52,7 @@
     int n = getOutput().size();
     List<Integer> lines = m_methodOutputMap.get(m);
     if (lines == null) {
-      lines = new ArrayList<Integer>();
+      lines = Lists.newArrayList();
       m_methodOutputMap.put(m, lines);
     }
     lines.add(n);
diff --git a/src/org/testng/ReporterConfig.java b/src/org/testng/ReporterConfig.java
index 14e802f..f3d0da3 100755
--- a/src/org/testng/ReporterConfig.java
+++ b/src/org/testng/ReporterConfig.java
@@ -1,5 +1,6 @@
 package org.testng;
 
+import org.testng.collections.Lists;
 import org.testng.internal.ClassHelper;
 import org.testng.internal.PropertyUtils;
 import org.testng.internal.Utils;
@@ -23,7 +24,7 @@
   /**
    * The properties of the reporter listener
    */
-  private List<Property> m_properties = new ArrayList<Property>();
+  private List<Property> m_properties = Lists.newArrayList();
 
   public void addProperty(Property property) {
     m_properties.add(property);
diff --git a/src/org/testng/SuiteRunner.java b/src/org/testng/SuiteRunner.java
index 0e5706f..35ebe8d 100644
--- a/src/org/testng/SuiteRunner.java
+++ b/src/org/testng/SuiteRunner.java
@@ -328,7 +328,7 @@
 
 
   private void runConcurrently() {
-    List<Runnable> tasks= new ArrayList<Runnable>(m_testRunners.size());
+    List<Runnable> tasks= Lists.newArrayList(m_testRunners.size());
     for(TestRunner tr: m_testRunners) {
       tasks.add(new SuiteWorker(tr));
     }
diff --git a/src/org/testng/TestNG.java b/src/org/testng/TestNG.java
index 49b98c6..4fdd98e 100644
--- a/src/org/testng/TestNG.java
+++ b/src/org/testng/TestNG.java
@@ -128,9 +128,9 @@
   protected ITestRunnerFactory m_testRunnerFactory;
 
   // These listeners can be overridden from the command line
-  protected List<ITestListener> m_testListeners = new ArrayList<ITestListener>();
-  protected List<ISuiteListener> m_suiteListeners = new ArrayList<ISuiteListener>();
-  private List<IReporter> m_reporters = new ArrayList<IReporter>();
+  protected List<ITestListener> m_testListeners = Lists.newArrayList();
+  protected List<ISuiteListener> m_suiteListeners = Lists.newArrayList();
+  private List<IReporter> m_reporters = Lists.newArrayList();
 
   public static final int HAS_FAILURE = 1;
   public static final int HAS_SKIPPED = 2;
@@ -157,8 +157,7 @@
 
   private IObjectFactory m_objectFactory;
   
-  protected List<IInvokedMethodListener> m_invokedMethodListeners
-    = new ArrayList<IInvokedMethodListener>();
+  protected List<IInvokedMethodListener> m_invokedMethodListeners = Lists.newArrayList();
 
   private Integer m_dataProviderThreadCount = null;
 
@@ -399,7 +398,7 @@
         xmlSuite.setVerbose(0);
         xmlSuite.setName("Jar suite");
         XmlTest xmlTest = new XmlTest(xmlSuite);
-        List<XmlClass> xmlClasses = new ArrayList<XmlClass>();
+        List<XmlClass> xmlClasses = Lists.newArrayList();
         for (String cls : classes) {
           XmlClass xmlClass = new XmlClass(cls);
           xmlClasses.add(xmlClass);
@@ -821,7 +820,7 @@
    * @return
    */
   public List<ISuite> runSuitesLocally() {
-    List<ISuite> result = new ArrayList<ISuite>();
+    List<ISuite> result = Lists.newArrayList();
     
     if (m_verbose > 0) {
       StringBuffer allFiles = new StringBuffer();
diff --git a/src/org/testng/TestNGAntTask.java b/src/org/testng/TestNGAntTask.java
index 263a11f..afc896d 100755
--- a/src/org/testng/TestNGAntTask.java
+++ b/src/org/testng/TestNGAntTask.java
@@ -98,8 +98,8 @@
 
   protected CommandlineJava m_javaCommand;
 
-  protected List<FileSet> m_xmlFilesets= new ArrayList<FileSet>();
-  protected List<FileSet> m_classFilesets= new ArrayList<FileSet>();
+  protected List<FileSet> m_xmlFilesets= Lists.newArrayList();
+  protected List<FileSet> m_classFilesets= Lists.newArrayList();
   protected Path m_sourceDirPath;
   protected File m_outputDir;
   protected File m_testjar;
@@ -146,7 +146,7 @@
   /**
    * The list of report listeners added via &lt;reporter&gt; sub-element of the Ant task
    */
-  private List<ReporterConfig> reporterConfigs = new ArrayList<ReporterConfig>();
+  private List<ReporterConfig> reporterConfigs = Lists.newArrayList();
 
   public void setParallel(String parallel) {
     m_parallelMode= parallel;
diff --git a/src/org/testng/TestNGCommandLineArgs.java b/src/org/testng/TestNGCommandLineArgs.java
index f87a8cf..b2f65a1 100644
--- a/src/org/testng/TestNGCommandLineArgs.java
+++ b/src/org/testng/TestNGCommandLineArgs.java
@@ -199,7 +199,7 @@
             sep = ",";
           }
           String[] strs = Utils.split(strClass, sep);
-          List<Class<?>> classes = new ArrayList<Class<?>>();
+          List<Class<?>> classes = Lists.newArrayList();
 
           for (String cls : strs) {
             classes.add(fileToClass(cls));
@@ -221,7 +221,7 @@
               // Assume it's a class name
               List<Class<?>> l = (List<Class<?>>) arguments.get(TESTCLASS_COMMAND_OPT);
               if (null == l) {
-                l = new ArrayList<Class<?>>();
+                l = Lists.newArrayList();
                 arguments.put(TESTCLASS_COMMAND_OPT, l);
               }
               Class<?> cls = fileToClass(nextArg);
@@ -351,7 +351,7 @@
         if ((i + 1) < argv.length) {
           ReporterConfig reporterConfig = ReporterConfig.deserialize(trim(argv[i + 1]));
           if (arguments.get(REPORTERS_LIST) == null) {
-            arguments.put(REPORTERS_LIST, new ArrayList<ReporterConfig>());
+            arguments.put(REPORTERS_LIST, Lists.newArrayList());
           }
           ((List<ReporterConfig>)arguments.get(REPORTERS_LIST)).add(reporterConfig);
           i++;
diff --git a/src/org/testng/TestRunner.java b/src/org/testng/TestRunner.java
index 3f61c64..79165c2 100644
--- a/src/org/testng/TestRunner.java
+++ b/src/org/testng/TestRunner.java
@@ -67,8 +67,8 @@
   transient private IAnnotationFinder m_annotationFinder= null;
 
   /** ITestListeners support. */
-  transient private List<ITestListener> m_testListeners = new ArrayList<ITestListener>();
-  transient private List<IConfigurationListener> m_configurationListeners= new ArrayList<IConfigurationListener>();
+  transient private List<ITestListener> m_testListeners = Lists.newArrayList();
+  transient private List<IConfigurationListener> m_configurationListeners = Lists.newArrayList();
 
   transient private IConfigurationListener m_confListener= new ConfigurationListener();
   transient private boolean m_skipFailedInvocationCounts;
@@ -529,7 +529,7 @@
   private void privateRunJUnit(XmlTest xmlTest) {
     final Class<?>[] classes= Utils.xmlClassesToClasses(m_testClassesFromXml);
     final List<ITestNGMethod> runMethods= Lists.newArrayList();
-    List<IMethodWorker> workers= new ArrayList<IMethodWorker>();
+    List<IMethodWorker> workers= Lists.newArrayList();
     // FIXME: directly referincing JUnitTestRunner which uses JUnit classes
     // may result in an class resolution exception under different JVMs
     // The resolution process is not specified in the JVM spec with a specific implementation,
@@ -577,7 +577,7 @@
     //
     // Calculate the lists of tests that can be run in sequence and in parallel
     //
-    List<List<ITestNGMethod>> sequentialList= new ArrayList<List<ITestNGMethod>>();
+    List<List<ITestNGMethod>> sequentialList= Lists.newArrayList();
     List<ITestNGMethod> parallelList= Lists.newArrayList();
     MapList<Integer, ITestNGMethod> sequentialMapList = new MapList<Integer, ITestNGMethod>();
 
@@ -596,7 +596,7 @@
       //
       // Create the workers
       //
-      List<TestMethodWorker> workers = new ArrayList<TestMethodWorker>();
+      List<TestMethodWorker> workers = Lists.newArrayList();
   
       createSequentialWorkers(sequentialList, xmlTest.getParameters(), m_classMethodMap, workers);
       MapList<Integer, TestMethodWorker> ml =
@@ -662,7 +662,7 @@
       }
     }
 
-    List<IMethodInstance> methodInstances = new ArrayList<IMethodInstance>();
+    List<IMethodInstance> methodInstances = Lists.newArrayList();
     for (ITestNGMethod tm : methods) {
       methodInstances.addAll(methodsToMultipleMethodInstances(tm));
     }
@@ -716,7 +716,7 @@
 
     if(parallel.isEmpty()) return;
     
-    List<IMethodInstance> methodInstances = new ArrayList<IMethodInstance>();
+    List<IMethodInstance> methodInstances = Lists.newArrayList();
     for (ITestNGMethod tm : parallel) {
       methodInstances.addAll(methodsToMultipleMethodInstances(tm));
     }
@@ -839,7 +839,7 @@
   }
 
   private List<MethodInstance> methodsToMultipleMethodInstances(ITestNGMethod... sl) {
-    List<MethodInstance> vResult = new ArrayList<MethodInstance>();
+    List<MethodInstance> vResult = Lists.newArrayList();
     for (ITestNGMethod m : sl) {
       Object[] instances = m.getTestClass().getInstances(true);
       for (Object instance : instances) {
@@ -1355,7 +1355,7 @@
   // Listeners
   /////
 
-  private List<InvokedMethod> m_invokedMethods = new ArrayList<InvokedMethod>();
+  private List<InvokedMethod> m_invokedMethods = Lists.newArrayList();
 
   private void dumpInvokedMethods() {
     System.out.println("\n*********** INVOKED METHODS\n");
diff --git a/src/org/testng/collections/Lists.java b/src/org/testng/collections/Lists.java
index 9313f6b..3a7052a 100755
--- a/src/org/testng/collections/Lists.java
+++ b/src/org/testng/collections/Lists.java
@@ -8,4 +8,8 @@
   public static <K> List<K> newArrayList() {
     return new ArrayList<K>();
   }
+
+  public static <K> List<K> newArrayList(int size) {
+    return new ArrayList<K>(size);
+  }
 }
diff --git a/src/org/testng/internal/Graph.java b/src/org/testng/internal/Graph.java
index d4e9990..446ba65 100644
--- a/src/org/testng/internal/Graph.java
+++ b/src/org/testng/internal/Graph.java
@@ -1,5 +1,6 @@
 package org.testng.internal;
 
+import org.testng.ITestResult;
 import org.testng.TestNGException;
 import org.testng.collections.Lists;
 import org.testng.collections.Maps;
@@ -109,7 +110,7 @@
   
   public void topologicalSort() {
     ppp("================ SORTING");
-    m_strictlySortedNodes = new ArrayList<T>();
+    m_strictlySortedNodes = Lists.newArrayList();
     if (null == m_independentNodes) {
       m_independentNodes = Maps.newHashMap();
     }
@@ -118,7 +119,7 @@
     // Clone the list of nodes but only keep those that are
     // not independent.
     //
-    List<Node<T>> nodes2 = new ArrayList<Node<T>>();
+    List<Node<T>> nodes2 = Lists.newArrayList();
     for (Node<T> n : getNodes()) {
       if (! isIndependent((T) n.getObject())) {
         ppp("ADDING FOR SORT: " + n.getObject());
diff --git a/src/org/testng/internal/Invoker.java b/src/org/testng/internal/Invoker.java
index 8574ae9..e8f0ce6 100644
--- a/src/org/testng/internal/Invoker.java
+++ b/src/org/testng/internal/Invoker.java
@@ -992,8 +992,7 @@
             
             try {
 //                if (true) { // @@
-              List<TestMethodWithDataProviderMethodWorker> workers
-                  = new ArrayList<TestMethodWithDataProviderMethodWorker>();
+              List<TestMethodWithDataProviderMethodWorker> workers = Lists.newArrayList();
 
 //                  if (false) { // bag.parameterHolder.origin == ParameterHolder.ORIGIN_DATA_PROVIDER) {
               if (bag.parameterHolder.origin == ParameterHolder.ORIGIN_DATA_PROVIDER &&
@@ -1177,7 +1176,7 @@
     //
     // Create the workers
     //
-    List<IMethodWorker> workers= new ArrayList<IMethodWorker>();
+    List<IMethodWorker> workers = Lists.newArrayList();
     
     for (int i = 0; i < testMethod.getInvocationCount(); i++) {
       // we use clones for reporting purposes
diff --git a/src/org/testng/internal/PoolService.java b/src/org/testng/internal/PoolService.java
index 60b30c0..1175cab 100755
--- a/src/org/testng/internal/PoolService.java
+++ b/src/org/testng/internal/PoolService.java
@@ -1,5 +1,6 @@
 package org.testng.internal;
 
+import org.testng.collections.Lists;
 import org.testng.collections.Maps;
 
 import java.util.ArrayList;
@@ -49,7 +50,7 @@
       public void run() {
         System.out.println("Listener thread starting, futures:" + m_futureMap.size());
         while (m_futureMap.size() > 0) {
-          List<KeyType> doneFutures = new ArrayList<KeyType>();
+          List<KeyType> doneFutures = Lists.newArrayList();
           for (KeyType key : m_futureMap.keySet()) {
             List<Future<FutureType>> futures = m_futureMap.get(key);
             if (isFinished(futures)) {
@@ -108,7 +109,7 @@
       }
     }
 
-    List<FutureType> result = new ArrayList<FutureType>();
+    List<FutureType> result = Lists.newArrayList();
     for (Future<FutureType> future : futures) {
       try {
         result.add(future.get());
@@ -128,7 +129,7 @@
       Future<FutureType> future = m_service.submit(task);
       List<Future<FutureType>> list = m_futureMap.get(key);
       if (list == null) {
-        list = new ArrayList<Future<FutureType>>();
+        list = Lists.newArrayList();
         m_futureMap.put(key, list);
       }
       list.add(future);
diff --git a/src/org/testng/internal/RunInfo.java b/src/org/testng/internal/RunInfo.java
index f0bfb58..52c9929 100755
--- a/src/org/testng/internal/RunInfo.java
+++ b/src/org/testng/internal/RunInfo.java
@@ -8,6 +8,7 @@
 import org.testng.IMethodSelector;
 import org.testng.IMethodSelectorContext;
 import org.testng.ITestNGMethod;
+import org.testng.collections.Lists;
 
 /**
  * This class contains all the information needed to determine
@@ -19,7 +20,7 @@
  */
 public class RunInfo implements Serializable {
   transient private List<MethodSelectorDescriptor>
-    m_methodSelectors = new ArrayList<MethodSelectorDescriptor>();
+    m_methodSelectors = Lists.newArrayList();
   
   public void addMethodSelector(IMethodSelector selector, int priority) {
     Utils.log("RunInfo", 3, "Adding method selector: " + selector + " priority: " + priority);
diff --git a/src/org/testng/internal/Tarjan.java b/src/org/testng/internal/Tarjan.java
index bce3549..04ccdad 100755
--- a/src/org/testng/internal/Tarjan.java
+++ b/src/org/testng/internal/Tarjan.java
@@ -1,5 +1,6 @@
 package org.testng.internal;
 
+import org.testng.collections.Lists;
 import org.testng.collections.Maps;
 
 import java.util.ArrayList;
@@ -42,7 +43,7 @@
     }
     
     if (m_lowlinks.get(v) == m_indices.get(v)) {
-      m_cycle = new ArrayList<T>();
+      m_cycle = Lists.newArrayList();
       T n;
       do {
         n = m_s.pop();
diff --git a/src/org/testng/internal/TestNGClassFinder.java b/src/org/testng/internal/TestNGClassFinder.java
index 2f2b7d3..e8ae287 100644
--- a/src/org/testng/internal/TestNGClassFinder.java
+++ b/src/org/testng/internal/TestNGClassFinder.java
@@ -130,7 +130,7 @@
               xmlTest,
               annotationFinder,
               m_testContext);
-            List<Class> moreClasses= new ArrayList<Class>();
+            List<Class> moreClasses= Lists.newArrayList();
 
             {
 //            ppp("INVOKING FACTORY " + fm + " " + this.hashCode());
diff --git a/src/org/testng/internal/Utils.java b/src/org/testng/internal/Utils.java
index 5be6c9f..f71ec8e 100755
--- a/src/org/testng/internal/Utils.java
+++ b/src/org/testng/internal/Utils.java
@@ -72,7 +72,7 @@
   }
 
   public static Class<?>[] xmlClassesToClasses(List<XmlClass> classes) {
-    List<Class<?>> result = new ArrayList<Class<?>>();
+    List<Class<?>> result = Lists.newArrayList();
 
     for (XmlClass xmlClass : classes) {
       try {
@@ -93,7 +93,7 @@
   }
 
   public static XmlClass[] classesToXmlClasses(Class<?>[] classes) {
-    List<XmlClass> result = new ArrayList<XmlClass>();
+    List<XmlClass> result = Lists.newArrayList();
 
     for (Class<?> cls : classes) {
       result.add(new XmlClass(cls, Boolean.TRUE));
diff --git a/src/org/testng/internal/annotations/Converter.java b/src/org/testng/internal/annotations/Converter.java
index 3b63b50..18a95e4 100755
--- a/src/org/testng/internal/annotations/Converter.java
+++ b/src/org/testng/internal/annotations/Converter.java
@@ -1,12 +1,12 @@
 package org.testng.internal.annotations;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.StringTokenizer;
-
+import org.testng.collections.Lists;
 import org.testng.internal.ClassHelper;
 import org.testng.internal.Utils;
 
+import java.util.List;
+import java.util.StringTokenizer;
+
 /**
  * Convert a string values into primitive types.
  * 
@@ -50,7 +50,7 @@
 
   public static Class[] getClassArray(String tagValue, Class[] def) {
     Class[] result = def;
-    List vResult = new ArrayList();
+    List vResult = Lists.newArrayList();
     if (tagValue != null) {
       StringTokenizer st = new StringTokenizer(tagValue, " ,");
       while (st.hasMoreElements()) {
diff --git a/src/org/testng/internal/thread/GroupThreadPoolExecutor.java b/src/org/testng/internal/thread/GroupThreadPoolExecutor.java
index 45373a9..c0dd5aa 100644
--- a/src/org/testng/internal/thread/GroupThreadPoolExecutor.java
+++ b/src/org/testng/internal/thread/GroupThreadPoolExecutor.java
@@ -27,7 +27,7 @@
   private static final boolean DOT_FILES = false;
 
   private DynamicGraph<ITestNGMethod> m_graph;
-  private List<Runnable> m_activeRunnables = new ArrayList<Runnable>();
+  private List<Runnable> m_activeRunnables = Lists.newArrayList();
   private IWorkerFactory m_factory;
   private XmlTest m_xmlTest;
   private List<String> m_dotFiles = Lists.newArrayList();
diff --git a/src/org/testng/internal/thread/ThreadUtil.java b/src/org/testng/internal/thread/ThreadUtil.java
index b9ff8c0..edbd67e 100644
--- a/src/org/testng/internal/thread/ThreadUtil.java
+++ b/src/org/testng/internal/thread/ThreadUtil.java
@@ -1,6 +1,7 @@
 package org.testng.internal.thread;

 

 

+import org.testng.collections.Lists;

 import org.testng.internal.Utils;

 

 import java.util.ArrayList;

@@ -86,7 +87,7 @@
 

   public static class ThreadFactoryImpl implements IThreadFactory, ThreadFactory {

     private String m_methodName;

-    private List<Thread> m_threads = new ArrayList<Thread>();

+    private List<Thread> m_threads = Lists.newArrayList();

 

     public ThreadFactoryImpl(String name) {

       m_methodName= name;

diff --git a/src/org/testng/junit/JUnitTestConverter.java b/src/org/testng/junit/JUnitTestConverter.java
index 7fc1200..286f67f 100755
--- a/src/org/testng/junit/JUnitTestConverter.java
+++ b/src/org/testng/junit/JUnitTestConverter.java
@@ -115,7 +115,7 @@
       m_typelines.put(file, new Integer(cd.position().line()));
 
       MethodDoc[] methods = cd.methods();
-      List<MethodDoc> testMethods = new ArrayList<MethodDoc>();
+      List<MethodDoc> testMethods = Lists.newArrayList();
 
       for (MethodDoc md : methods) {
         if (isTest(md) || isSetUp(md) || isTearDown(md)) {
diff --git a/src/org/testng/remote/SuiteDispatcher.java b/src/org/testng/remote/SuiteDispatcher.java
index 5d8dfe1..f86e9f7 100644
--- a/src/org/testng/remote/SuiteDispatcher.java
+++ b/src/org/testng/remote/SuiteDispatcher.java
@@ -11,6 +11,7 @@
 import org.testng.ITestResult;

 import org.testng.SuiteRunner;

 import org.testng.TestNGException;

+import org.testng.collections.Lists;

 import org.testng.internal.Invoker;

 import org.testng.internal.PropertiesFile;

 import org.testng.internal.annotations.IAnnotationFinder;

@@ -97,7 +98,7 @@
 	                              String outputDir,

 	                              IAnnotationFinder jdkAnnotationFinder, 

 	                              List<ITestListener> testListeners){

-		List<ISuite> result = new ArrayList<ISuite>();

+		List<ISuite> result = Lists.newArrayList();

 		try

 		{

 			//

diff --git a/src/org/testng/remote/adapter/DefaultMastertAdapter.java b/src/org/testng/remote/adapter/DefaultMastertAdapter.java
index 60a4188..b8e5d91 100755
--- a/src/org/testng/remote/adapter/DefaultMastertAdapter.java
+++ b/src/org/testng/remote/adapter/DefaultMastertAdapter.java
@@ -1,18 +1,18 @@
 package org.testng.remote.adapter;

 

-import java.io.IOException;

-import java.net.Socket;

-import java.net.UnknownHostException;

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Properties;

-

+import org.testng.collections.Lists;

 import org.testng.internal.Utils;

 import org.testng.internal.remote.SlavePool;

 import org.testng.internal.thread.ThreadUtil;

 import org.testng.remote.RemoteSuiteWorker;

 import org.testng.xml.XmlSuite;

 

+import java.io.IOException;

+import java.net.Socket;

+import java.net.UnknownHostException;

+import java.util.List;

+import java.util.Properties;

+

 /**

  * Default Master adapter, provides an adapter based on hosts file.

  * 

@@ -28,8 +28,7 @@
 	private String[] m_hosts;

 

 	final private SlavePool m_slavePool = new SlavePool();

-	final private List<Runnable> m_workers = new ArrayList<Runnable>();

-

+	final private List<Runnable> m_workers = Lists.newArrayList();

 

 	/*

 	 * @see org.testng.remote.adapter.IMasterAdapter#init(java.util.Properties)

diff --git a/src/org/testng/remote/strprotocol/TestResultMessage.java b/src/org/testng/remote/strprotocol/TestResultMessage.java
index 031463a..f3f2fc7 100755
--- a/src/org/testng/remote/strprotocol/TestResultMessage.java
+++ b/src/org/testng/remote/strprotocol/TestResultMessage.java
@@ -9,6 +9,7 @@
 import org.testng.ITestContext;
 import org.testng.ITestResult;
 import org.testng.SkipException;
+import org.testng.collections.Lists;
 
 
 /**
@@ -250,7 +251,7 @@
   
   private String[] toString(Object[] objects, Class[] objectClasses) {
     if(null == objects) return new String[0];
-    List<String> result= new ArrayList<String>(objects.length);
+    List<String> result= Lists.newArrayList(objects.length);
     for(Object o: objects) {
       if(null == o) {
         result.add("null");
@@ -271,7 +272,7 @@
   
   private String[] toString(Class[] classes) {
     if(null == classes) return new String[0];
-    List<String> result= new ArrayList<String>(classes.length);
+    List<String> result= Lists.newArrayList(classes.length);
     for(Class cls: classes) {
       result.add(cls.getName());
     }
@@ -284,7 +285,7 @@
    * @return
    */
   private String[] extractParamTypes(String[] params) {
-    List<String> result= new ArrayList<String>(params.length);
+    List<String> result= Lists.newArrayList(params.length);
     for(String s: params) {
       result.add(s.substring(0, s.indexOf(':')));
     }
@@ -293,7 +294,7 @@
   }
 
   private String[] extractParams(String[] params) {
-    List<String> result= new ArrayList<String>(params.length);
+    List<String> result= Lists.newArrayList(params.length);
     for(String s: params) {
       result.add(MessageHelper.replaceNewLineReplacer(s.substring(s.indexOf(':') + 1)));
     }
diff --git a/src/org/testng/reporters/FailedReporter.java b/src/org/testng/reporters/FailedReporter.java
index e1932c2..6017b9c 100755
--- a/src/org/testng/reporters/FailedReporter.java
+++ b/src/org/testng/reporters/FailedReporter.java
@@ -181,7 +181,7 @@
    * on the parameter methods
    */
   private List<XmlClass> createXmlClasses(List<ITestNGMethod> methods) {
-    List<XmlClass> result = new ArrayList<XmlClass>();
+    List<XmlClass> result = Lists.newArrayList();
     Map<Class, Set<ITestNGMethod>> methodsMap= Maps.newHashMap();
     
     for (ITestNGMethod m : methods) {
@@ -201,7 +201,7 @@
       // @author Borojevic 
       // Need to check all the methods, not just @Test ones.
       XmlClass xmlClass= new XmlClass(clazz.getName(), Boolean.FALSE);
-      List<XmlInclude> methodNames= new ArrayList<XmlInclude>(methodList.size());
+      List<XmlInclude> methodNames= Lists.newArrayList(methodList.size());
       for(ITestNGMethod m: methodList) {
         methodNames.add(new XmlInclude(m.getMethod().getName(), m.getFailedInvocationNumbers()));
       }
diff --git a/src/org/testng/xml/TestNGContentHandler.java b/src/org/testng/xml/TestNGContentHandler.java
index acd97fc..823ead6 100755
--- a/src/org/testng/xml/TestNGContentHandler.java
+++ b/src/org/testng/xml/TestNGContentHandler.java
@@ -301,7 +301,7 @@
    */
   public void xmlClasses(boolean start, Attributes attributes) {
     if (start) {
-      m_currentClasses = new ArrayList<XmlClass>();
+      m_currentClasses = Lists.newArrayList();
     }
     else {
       m_currentTest.setXmlClasses(m_currentClasses);
@@ -339,7 +339,7 @@
    */
   public void xmlPackages(boolean start, Attributes attributes) {
     if (start) {
-      m_currentPackages = new ArrayList<XmlPackage>();
+      m_currentPackages = Lists.newArrayList();
     }
     else {
       if (null != m_currentPackages) {
diff --git a/src/org/testng/xml/XmlPackage.java b/src/org/testng/xml/XmlPackage.java
index 95b6884..13abee2 100755
--- a/src/org/testng/xml/XmlPackage.java
+++ b/src/org/testng/xml/XmlPackage.java
@@ -74,7 +74,7 @@
   }
   
   private List<XmlClass> initializeXmlClasses() {
-    List<XmlClass> result= new ArrayList<XmlClass>();
+    List<XmlClass> result= Lists.newArrayList();
     try {
       String[] classes = PackageUtils.findClassesInPackage(m_name, m_include, m_exclude);
       
diff --git a/src/org/testng/xml/XmlSuite.java b/src/org/testng/xml/XmlSuite.java
index 42786ba..5be8d83 100755
--- a/src/org/testng/xml/XmlSuite.java
+++ b/src/org/testng/xml/XmlSuite.java
@@ -72,16 +72,16 @@
   private AnnotationTypeEnum m_defaultAnnotations = VersionInfo.getDefaultAnnotationType();
   
   /** The packages containing test classes. */
-  private List<XmlPackage> m_xmlPackages = new ArrayList<XmlPackage>();
+  private List<XmlPackage> m_xmlPackages = Lists.newArrayList();
   
   /** BeanShell expression. */
   private String m_expression = null;
   
   /** Suite level method selectors. */
-  private List<XmlMethodSelector> m_methodSelectors = new ArrayList<XmlMethodSelector>();
+  private List<XmlMethodSelector> m_methodSelectors = Lists.newArrayList();
   
   /** Tests in suite. */
-  private List<XmlTest> m_tests = new ArrayList<XmlTest>();
+  private List<XmlTest> m_tests = Lists.newArrayList();
   
   /** Suite level parameters. */
   private Map<String, String> m_parameters = Maps.newHashMap();
diff --git a/src/org/testng/xml/XmlTest.java b/src/org/testng/xml/XmlTest.java
index 71f9a65..71c2455 100755
--- a/src/org/testng/xml/XmlTest.java
+++ b/src/org/testng/xml/XmlTest.java
@@ -27,7 +27,7 @@
   private Boolean m_isJUnit;
   private int m_threadCount= -1;
 
-  private List<XmlClass> m_xmlClasses = new ArrayList<XmlClass>();
+  private List<XmlClass> m_xmlClasses = Lists.newArrayList();
   
   private List<String> m_includedGroups = Lists.newArrayList();
   private List<String> m_excludedGroups = Lists.newArrayList();
@@ -41,9 +41,9 @@
   
   // BeanShell expression
   private String m_expression;
-  private List<XmlMethodSelector> m_methodSelectors = new ArrayList<XmlMethodSelector>();
+  private List<XmlMethodSelector> m_methodSelectors = Lists.newArrayList();
   // test level packages
-  private List<XmlPackage> m_xmlPackages = new ArrayList<XmlPackage>();
+  private List<XmlPackage> m_xmlPackages = Lists.newArrayList();
   
   private String m_timeOut;
   private Boolean m_skipFailedInvocationCounts;