diff --git a/src/main/java/org/testng/asserts/SoftAssert.java b/src/main/java/org/testng/asserts/SoftAssert.java
index 95dad5f..845bdea 100644
--- a/src/main/java/org/testng/asserts/SoftAssert.java
+++ b/src/main/java/org/testng/asserts/SoftAssert.java
@@ -11,7 +11,7 @@
  */
 public class SoftAssert extends Assertion {
   // LinkedHashMap to preserve the order
-  private Map<AssertionError, IAssert<?>> m_errors = Maps.newLinkedHashMap();
+  private final Map<AssertionError, IAssert<?>> m_errors = Maps.newLinkedHashMap();
 
   @Override
   protected void doAssert(IAssert<?> a) {
@@ -28,21 +28,16 @@
   }
 
   public void assertAll() {
-    if (! m_errors.isEmpty()) {
+    if (!m_errors.isEmpty()) {
       StringBuilder sb = new StringBuilder("The following asserts failed:");
       boolean first = true;
       for (Map.Entry<AssertionError, IAssert<?>> ae : m_errors.entrySet()) {
         if (first) {
           first = false;
         } else {
-          sb.append(", ");
+          sb.append(",");
         }
         sb.append("\n\t");
-        final String message = ae.getValue().getMessage();
-        if (message != null) {
-          sb.append(message).append("\t");
-        }
-        //noinspection ThrowableResultOfMethodCallIgnored
         sb.append(ae.getKey().getMessage());
       }
       throw new AssertionError(sb.toString());
diff --git a/src/test/java/test/assertion/SoftAssertTest.java b/src/test/java/test/assertion/SoftAssertTest.java
index 66e850c..2aebaed 100644
--- a/src/test/java/test/assertion/SoftAssertTest.java
+++ b/src/test/java/test/assertion/SoftAssertTest.java
@@ -33,15 +33,18 @@
 
   @Test
   public void testAssertAllCount() throws Exception {
-    final SoftAssert sa = new SoftAssert();
+    String message = "My message";
+    SoftAssert sa = new SoftAssert();
     sa.assertTrue(true);
-    sa.assertTrue(false);
+    sa.assertTrue(false, message);
     try {
       sa.assertAll();
       Assert.fail("Exception expected");
     } catch (AssertionError e) {
-      final String message = e.getMessage();
-      Assert.assertEquals(message.split("\r?\n").length, 2, message);
+      String[] lines = e.getMessage().split("\r?\n");
+      Assert.assertEquals(lines.length, 2);
+      lines[1] = lines[1].replaceFirst(message, "");
+      Assert.assertFalse(lines[1].contains(message));
     }
   }
 }
