diff --git a/src/main/java/org/sablecc/sablecc/CharSet.java b/src/main/java/org/sablecc/sablecc/CharSet.java
index c1bec22dfdab7c561666cd510289421da73ef2d7..f6ae0cb0c8aa474d3adb66cb264b98ddb9724185 100644
--- a/src/main/java/org/sablecc/sablecc/CharSet.java
+++ b/src/main/java/org/sablecc/sablecc/CharSet.java
@@ -162,14 +162,16 @@ public class CharSet implements Cloneable
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
 
     for(Interval i : intervals)
     {
-      result.append("[" + i + "] ");
+      result.append("[");
+      result.append(i);
+      result.append("] ");
     }
 
-    return "" + result;
+    return result.toString();
   }
 
   public static class Interval implements Cloneable
diff --git a/src/main/java/org/sablecc/sablecc/DFA.java b/src/main/java/org/sablecc/sablecc/DFA.java
index 7b53279ada239a18a53b18542a1dba84ae1436fe..5d5d1ee333877d69b7efabc02b620e77808f16ca 100644
--- a/src/main/java/org/sablecc/sablecc/DFA.java
+++ b/src/main/java/org/sablecc/sablecc/DFA.java
@@ -312,11 +312,14 @@ public class DFA
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
 
     for(int i = 0; i < states.size(); i++)
     {
-      result.append(i + ": " + states.get(i) + System.getProperty("line.separator"));
+      result.append(i);
+      result.append(": ");
+      result.append(states.get(i));
+      result.append(System.getProperty("line.separator"));
     }
 
     return result.toString();
@@ -336,7 +339,7 @@ public class DFA
     @Override
     public String toString()
     {
-      StringBuffer result = new StringBuffer();
+      StringBuilder result = new StringBuilder();
 
       /*            for(int i = 0; i < nfaStates.size(); i++)
                   {
@@ -351,10 +354,11 @@ public class DFA
 
       for(DFA.Transition transition : transitions)
       {
-        result.append(transition + ",");
+        result.append(transition);
+        result.append(",");
       }
 
-      return result /*+ " " + nfaStates*/ + "";
+      return result.toString() /*+ " " + nfaStates*/;
     }
   }
 
diff --git a/src/main/java/org/sablecc/sablecc/GenAlts.java b/src/main/java/org/sablecc/sablecc/GenAlts.java
index 26e5f2cfa15c9c5cc9a84ab247db1e1f0f2adbd8..5c670d7efc2b4ba7ff90afdd4cfd75d2ab9c93a6 100644
--- a/src/main/java/org/sablecc/sablecc/GenAlts.java
+++ b/src/main/java/org/sablecc/sablecc/GenAlts.java
@@ -358,7 +358,7 @@ public class GenAlts extends DepthFirstAdapter
 
   public static String nodeName(String s)
   {
-    StringBuffer result = new StringBuffer(s);
+    StringBuilder result = new StringBuilder(s);
 
     if(result.length() > 0)
     {
diff --git a/src/main/java/org/sablecc/sablecc/GenParser.java b/src/main/java/org/sablecc/sablecc/GenParser.java
index 44fbe339b5b6dc80d5e567d5e21d359644082d33..06a677000db9114fd206587248119767fa1c18c6 100644
--- a/src/main/java/org/sablecc/sablecc/GenParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenParser.java
@@ -445,7 +445,7 @@ public class GenParser extends DepthFirstAdapter
 
       macros.apply(file, "ParserActionHeader");
 
-      StringBuffer table = new StringBuffer();
+      StringBuilder table = new StringBuilder();
 
       DataOutputStream out = new DataOutputStream(
                                new BufferedOutputStream(
@@ -484,9 +484,11 @@ public class GenParser extends DepthFirstAdapter
         }
         table.append("            {");
 
-        table.append("{" + -1 + ", " +
-                     mostFrequentAction + ", " +
-                     mostFrequentDestination + "}, ");
+        table.append("{-1, ");
+        table.append(mostFrequentAction);
+        table.append(", ");
+        table.append(mostFrequentDestination);
+        table.append("}, ");
         innerArray.add(
           new int[] {-1,
                      mostFrequentAction.equals("ERROR") ? 3 : 1,
@@ -499,29 +501,40 @@ public class GenParser extends DepthFirstAdapter
             switch(Grammar.action_[i][j][0])
             {
             case 0:
-              table.append("{" + j + ", SHIFT, " + Grammar.action_[i][j][1] + "}, ");
+              table.append("{");
+              table.append(j);
+              table.append(", SHIFT, ");
+              table.append(Grammar.action_[i][j][1]);
+              table.append("}, ");
               innerArray.add(new int[] {j, 0, Grammar.action_[i][j][1]});
               break;
             case 1:
               if(Grammar.action_[i][j][1] != mostFrequentDestination)
               {
-                table.append("{" + j + ", REDUCE, " + Grammar.action_[i][j][1] + "}, ");
+                table.append("{");
+                table.append(j);
+                table.append(", REDUCE, ");
+                table.append(Grammar.action_[i][j][1]);
+                table.append("}, ");
                 innerArray.add(new int[] {j, 1, Grammar.action_[i][j][1]});
               }
               break;
             case 2:
-              table.append("{" + j + ", ACCEPT, -1}, ");
+              table.append("{");
+              table.append(j);
+              table.append(", ACCEPT, -1}, ");
               innerArray.add(new int[] {j, 2, -1});
               break;
             }
           }
         }
 
-        table.append("}," + System.getProperty("line.separator"));
+        table.append("},");
+        table.append(System.getProperty("line.separator"));
         outerArray.add(innerArray);
       }
 
-      file.write("" + table);
+      file.write(table.toString());
 
       out.writeInt(outerArray.size());
       for(List<int[]> innerArray : outerArray)
@@ -540,7 +553,7 @@ public class GenParser extends DepthFirstAdapter
 
       macros.apply(file, "ParserGotoHeader");
 
-      table = new StringBuffer();
+      table = new StringBuilder();
       outerArray = new ArrayList<>();
 
       for(int j = 0; j < nonterminals.length - 1; j++)
@@ -569,7 +582,9 @@ public class GenParser extends DepthFirstAdapter
 
         table.append("            {");
 
-        table.append("{" + (-1) + ", " + mostFrequent + "}, ");
+        table.append("{-1, ");
+        table.append(mostFrequent);
+        table.append("}, ");
         innerArray.add(new int[] {-1, mostFrequent});
 
         for(int i = 0; i < Grammar.goto_.length; i++)
@@ -577,17 +592,22 @@ public class GenParser extends DepthFirstAdapter
           if((Grammar.goto_[i][j] != -1) &&
               (Grammar.goto_[i][j] != mostFrequent))
           {
-            table.append("{" + i + ", " + Grammar.goto_[i][j] + "}, ");
+            table.append("{");
+            table.append(i);
+            table.append(", ");
+            table.append(Grammar.goto_[i][j]);
+            table.append("}, ");
             innerArray.add(new int[] {i, Grammar.goto_[i][j]});
           }
         }
 
-        table.append("}," + System.getProperty("line.separator"));
+        table.append("},");
+        table.append(System.getProperty("line.separator"));
 
         outerArray.add(innerArray);
       }
 
-      file.write("" + table);
+      file.write(table.toString());
 
       out.writeInt(outerArray.size());
       for(List<int[]> innerArray : outerArray)
@@ -606,8 +626,8 @@ public class GenParser extends DepthFirstAdapter
 
       macros.apply(file, "ParserErrorsHeader");
 
-      table = new StringBuffer();
-      StringBuffer index = new StringBuffer();
+      table = new StringBuilder();
+      StringBuilder index = new StringBuilder();
       int nextIndex = 0;
 
       Map<String, Integer> errorIndex = new TreeMap<>();
@@ -618,7 +638,7 @@ public class GenParser extends DepthFirstAdapter
       index.append("            ");
       for(int i = 0; i < Grammar.action_.length; i++)
       {
-        StringBuffer s = new StringBuffer();
+        StringBuilder s = new StringBuilder();
         s.append("expecting: ");
 
         boolean comma = false;
@@ -641,20 +661,25 @@ public class GenParser extends DepthFirstAdapter
 
         if(errorIndex.containsKey(s.toString()))
         {
-          index.append(errorIndex.get(s.toString()) + ", ");
+          index.append(errorIndex.get(s.toString()));
+          index.append(", ");
           indexArray.add(errorIndex.get(s.toString()));
         }
         else
         {
-          table.append("            \"" + s + "\"," + System.getProperty("line.separator"));
+          table.append("            \"");
+          table.append(s);
+          table.append("\",");
+          table.append(System.getProperty("line.separator"));
           outerArray2.add(s.toString());
           errorIndex.put(s.toString(), nextIndex);
           indexArray.add(nextIndex);
-          index.append(nextIndex++ + ", ");
+          index.append(nextIndex++);
+          index.append(", ");
         }
       }
 
-      file.write("" + table);
+      file.write(table.toString());
 
       out.writeInt(outerArray2.size());
       for(String s : outerArray2)
@@ -678,7 +703,7 @@ public class GenParser extends DepthFirstAdapter
       macros.apply(file, "ParserErrorsTail");
 
       macros.apply(file, "ParserErrorIndexHeader");
-      file.write("" + index);
+      file.write(index.toString());
       macros.apply(file, "ParserErrorIndexTail");
 
       macros.apply(file, "ParserTail");
@@ -748,7 +773,7 @@ public class GenParser extends DepthFirstAdapter
       return 0;
     }
 
-    StringBuffer s = new StringBuffer();
+    StringBuilder s = new StringBuilder();
     int i = 1;
 
     while((i < name.length()) &&
diff --git a/src/main/java/org/sablecc/sablecc/GenTokens.java b/src/main/java/org/sablecc/sablecc/GenTokens.java
index 513aa6a0afb6c8e703ae67c27c6505c049db45f7..4e863b7d5f5857c7bb7dfad7e8417b6067d417a1 100644
--- a/src/main/java/org/sablecc/sablecc/GenTokens.java
+++ b/src/main/java/org/sablecc/sablecc/GenTokens.java
@@ -120,7 +120,7 @@ public class GenTokens extends DepthFirstAdapter
 
   private String processText(String s)
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
 
     for(int i = 0; i < s.length(); i++)
     {
diff --git a/src/main/java/org/sablecc/sablecc/Grammar.java b/src/main/java/org/sablecc/sablecc/Grammar.java
index ea93cde68d9430b2cf4afdf2882c7b5d9c4778a2..8ee609f8c4e0c1c7b0544e70cd9f6549413ba65e 100644
--- a/src/main/java/org/sablecc/sablecc/Grammar.java
+++ b/src/main/java/org/sablecc/sablecc/Grammar.java
@@ -99,7 +99,7 @@ public final class Grammar
     goto_ = new int[sets.length][nonterminals.length - 1];
 
     Set<String> listOfConflictualProds = new HashSet<>();
-    StringBuffer conflictMessage = new StringBuffer();
+    StringBuilder conflictMessage = new StringBuilder();
 
     for(int i = 0; i < sets.length; i++)
     {
@@ -159,28 +159,34 @@ public final class Grammar
                   switch(action[0])
                   {
                   case 0:
-                    conflictMessage.append(
-                      "\n\nshift/reduce conflict in state [stack:" +
-                      collection.collection.names.get(i) + "*] on " +
-                      terminals[j] + " in " + state.toString(terminals[j]));
+                    conflictMessage.append("\n\nshift/reduce conflict in state [stack:");
+                    conflictMessage.append(collection.collection.names.get(i));
+                    conflictMessage.append("*] on ");
+                    conflictMessage.append(terminals[j]);
+                    conflictMessage.append(" in ");
+                    conflictMessage.append(state.toString(terminals[j]));
 
                     /* nothing else to do */
                     break;
 
                   case 1:
-                    conflictMessage.append(
-                      "\n\nreduce/reduce conflict in state [stack:" +
-                      collection.collection.names.get(i) + "*] on " +
-                      terminals[j] + " in " + state.toString(terminals[j]));
+                    conflictMessage.append("\n\nreduce/reduce conflict in state [stack:");
+                    conflictMessage.append(collection.collection.names.get(i));
+                    conflictMessage.append("*] on ");
+                    conflictMessage.append(terminals[j]);
+                    conflictMessage.append(" in ");
+                    conflictMessage.append(state.toString(terminals[j]));
 
                     listOfConflictualProds.add(Symbol.symbol(Production.production(action[1]).leftside, false).toString());
                     break;
 
                   case 2:
-                    conflictMessage.append(
-                      "\n\nreduce/accept conflict in state [stack:" +
-                      collection.collection.names.get(i) + "*] on " +
-                      terminals[j] + " in " + state.toString(terminals[j]));
+                    conflictMessage.append("\n\nreduce/accept conflict in state [stack:");
+                    conflictMessage.append(collection.collection.names.get(i));
+                    conflictMessage.append("*] on ");
+                    conflictMessage.append(terminals[j]);
+                    conflictMessage.append(" in ");
+                    conflictMessage.append(state.toString(terminals[j]));
 
                     listOfConflictualProds.add(Symbol.symbol(Production.production(action[1]).leftside, false).toString());
                     break;
@@ -208,19 +214,23 @@ public final class Grammar
                   switch(action[0])
                   {
                   case 0:
-                    conflictMessage.append(
-                      "shift/accept conflict in state [stack:" +
-                      collection.collection.names.get(i) + "*] on " +
-                      terminals[j] + " in " + state);
+                    conflictMessage.append("shift/accept conflict in state [stack:");
+                    conflictMessage.append(collection.collection.names.get(i));
+                    conflictMessage.append("*] on ");
+                    conflictMessage.append(terminals[j]);
+                    conflictMessage.append(" in ");
+                    conflictMessage.append(state);
 
                     /* nothing else to do */
                     break;
 
                   case 1:
-                    conflictMessage.append(
-                      "reduce/accept conflict in state [stack:" +
-                      collection.collection.names.get(i) + "*] on " +
-                      terminals[j] + " in " + state);
+                    conflictMessage.append("reduce/accept conflict in state [stack:");
+                    conflictMessage.append(collection.collection.names.get(i));
+                    conflictMessage.append("*] on ");
+                    conflictMessage.append(terminals[j]);
+                    conflictMessage.append(" in ");
+                    conflictMessage.append(state);
 
                     listOfConflictualProds.add(Symbol.symbol(Production.production(action[1]).leftside, false).toString());
 
diff --git a/src/main/java/org/sablecc/sablecc/IntSet.java b/src/main/java/org/sablecc/sablecc/IntSet.java
index c7daf53a16e72c76872f793fd0b115a4031179d7..7fe71d8365659453bf08cda7d495a16aba421f17 100644
--- a/src/main/java/org/sablecc/sablecc/IntSet.java
+++ b/src/main/java/org/sablecc/sablecc/IntSet.java
@@ -301,7 +301,7 @@ public class IntSet
   @Override
   public String toString()
   {
-    StringBuffer s = new StringBuffer();
+    StringBuilder s = new StringBuilder();
 
     s.append("{");
 
diff --git a/src/main/java/org/sablecc/sablecc/LR0Collection.java b/src/main/java/org/sablecc/sablecc/LR0Collection.java
index c2412239e16711b059e1b3263d348cde1de04e0d..86afd7331800decd7431113ab43c09c7ea61cab3 100644
--- a/src/main/java/org/sablecc/sablecc/LR0Collection.java
+++ b/src/main/java/org/sablecc/sablecc/LR0Collection.java
@@ -108,15 +108,18 @@ final class LR0Collection
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
 
-    result.append("{[LR0ItemCollection]" + System.getProperty("line.separator"));
+    result.append("{[LR0ItemCollection]");
+    result.append(System.getProperty("line.separator"));
     LR0ItemSet[] sets = sets();
     Symbol[] symbols = Symbol.symbols();
 
     for(int i = 0; i < sets.length; i++)
     {
-      result.append(i + ":" + Grammar.CLOSURE(sets[i]));
+      result.append(i);
+      result.append(":");
+      result.append(Grammar.CLOSURE(sets[i]));
       result.append(System.getProperty("line.separator"));
 
       for(int j = 0; j < symbols.length; j++)
diff --git a/src/main/java/org/sablecc/sablecc/LR0Item.java b/src/main/java/org/sablecc/sablecc/LR0Item.java
index 104702ee03d052596b6616d5a4bc09e6c2546b7d..b9bf3bdd7e710231ef0050c69aec3512b7dfc4e0 100644
--- a/src/main/java/org/sablecc/sablecc/LR0Item.java
+++ b/src/main/java/org/sablecc/sablecc/LR0Item.java
@@ -63,7 +63,7 @@ final class LR0Item implements Cloneable, Comparable<LR0Item>
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     String prodStr = (Production.production(production)).toString();
     int pos = 0;
 
diff --git a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
index beb9bdc6e7b5ea10c276173c796479d6b7e66149..a8765d9bd85cb1dbb3090c2467e58c7ecd017419 100644
--- a/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
+++ b/src/main/java/org/sablecc/sablecc/LR0ItemSet.java
@@ -63,7 +63,7 @@ final class LR0ItemSet implements Cloneable, Comparable<LR0ItemSet>
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     result.append("{");
 
     Production[] productions = Production.productions();
diff --git a/src/main/java/org/sablecc/sablecc/LR1Collection.java b/src/main/java/org/sablecc/sablecc/LR1Collection.java
index a40eb3f4eb970cb62c0dc92e60e6797c0967a9c5..ddd62001337e88252149492554faeedbc9e869ab 100644
--- a/src/main/java/org/sablecc/sablecc/LR1Collection.java
+++ b/src/main/java/org/sablecc/sablecc/LR1Collection.java
@@ -153,23 +153,28 @@ final class LR1Collection
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
 
     result.append(collection);
     result.append(System.getProperty("line.separator"));
 
-    result.append("Lookaheads" + System.getProperty("line.separator"));
+    result.append("Lookaheads");
+    result.append(System.getProperty("line.separator"));
     LR0ItemSet[] sets = collection.sets();
 
     for(int i = 0; i < sets.length; i++)
     {
-      result.append(i + ":" + System.getProperty("line.separator"));
+      result.append(i);
+      result.append(":");
+      result.append(System.getProperty("line.separator"));
       LR0Item[] items = sets[i].items();
 
       for(int j = 0; j < items.length; j++)
       {
-        result.append(items[j] + ":" + lookaheads[i].get(items[j]) +
-                      System.getProperty("line.separator"));
+        result.append(items[j]);
+        result.append(":");
+        result.append(lookaheads[i].get(items[j]));
+        result.append(System.getProperty("line.separator"));
       }
     }
 
diff --git a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
index c45a7516fa77975973abc8b1da63bb45aeeb24ee..11553560b1b8e673b45d07c4d322dd15e6d3a8dd 100644
--- a/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
+++ b/src/main/java/org/sablecc/sablecc/LR1ItemSet.java
@@ -66,8 +66,10 @@ final class LR1ItemSet implements Cloneable, Comparable<LR1ItemSet>
   {
     String nl = System.getProperty("line.separator");
 
-    StringBuffer result = new StringBuffer();
-    result.append("{" + nl + "\t");
+    StringBuilder result = new StringBuilder();
+    result.append("{");
+    result.append(nl);
+    result.append("\t");
 
     Production[] productions = Production.productions();
     Symbol[] terminals = Symbol.terminals();
@@ -88,7 +90,9 @@ final class LR1ItemSet implements Cloneable, Comparable<LR1ItemSet>
           {
             if(comma)
             {
-              result.append("," + nl + "\t");
+              result.append(",");
+              result.append(nl);
+              result.append("\t");
             }
             else
             {
@@ -101,7 +105,8 @@ final class LR1ItemSet implements Cloneable, Comparable<LR1ItemSet>
       }
     }
 
-    result.append(nl + "}");
+    result.append(nl);
+    result.append("}");
     return result.toString();
   }
 
@@ -125,7 +130,7 @@ final class LR1ItemSet implements Cloneable, Comparable<LR1ItemSet>
       }
     }
 
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     result.append("{");
 
     boolean colon = false;
diff --git a/src/main/java/org/sablecc/sablecc/MacroExpander.java b/src/main/java/org/sablecc/sablecc/MacroExpander.java
index 72a05a376f965bdfce7e6a9fc3d37d8ded5d36f7..5ff476f224ca4e22f173be12ad22f4fe5094a2f2 100644
--- a/src/main/java/org/sablecc/sablecc/MacroExpander.java
+++ b/src/main/java/org/sablecc/sablecc/MacroExpander.java
@@ -83,7 +83,7 @@ public class MacroExpander
       {
         if((c = line.charAt(i)) == '$')
         {
-          StringBuffer index = new StringBuffer();
+          StringBuilder index = new StringBuilder();
 
           while((c = line.charAt(++i)) != '$')
           {
diff --git a/src/main/java/org/sablecc/sablecc/NFA.java b/src/main/java/org/sablecc/sablecc/NFA.java
index ba1475b9423f83c25abe6c595ac7522a82e14ad1..7ae0231f42892e43cb470ae7fbfd3cbf36559b01 100644
--- a/src/main/java/org/sablecc/sablecc/NFA.java
+++ b/src/main/java/org/sablecc/sablecc/NFA.java
@@ -278,10 +278,13 @@ public class NFA implements Cloneable
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     for(int i = 0; i < states.length; i++)
     {
-      result.append(i + ":" + states[i] + System.getProperty("line.separator"));
+      result.append(i);
+      result.append(":");
+      result.append(states[i]);
+      result.append(System.getProperty("line.separator"));
     }
     return result.toString();
   }
@@ -316,18 +319,22 @@ public class NFA implements Cloneable
     @Override
     public String toString()
     {
-      StringBuffer result = new StringBuffer();
+      StringBuilder result = new StringBuilder();
       if(accept != null)
       {
-        result.append("(" + accept + ") ");
+        result.append("(");
+        result.append(accept);
+        result.append(") ");
       }
       if(transitions[0] != null)
       {
-        result.append(" " + transitions[0]);
+        result.append(" ");
+        result.append(transitions[0]);
       }
       if(transitions[1] != null)
       {
-        result.append(" " + transitions[1]);
+        result.append(" ");
+        result.append(transitions[1]);
       }
       return result.toString();
     }
diff --git a/src/main/java/org/sablecc/sablecc/Production.java b/src/main/java/org/sablecc/sablecc/Production.java
index 50d90179e81edc00848e4342fc885900b08c9731..9fd864ca9f4b699a34f0ff4185150dd53a76352f 100644
--- a/src/main/java/org/sablecc/sablecc/Production.java
+++ b/src/main/java/org/sablecc/sablecc/Production.java
@@ -124,7 +124,7 @@ final class Production
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
 
     result.append(Symbol.symbol(leftside, false));
 
diff --git a/src/main/java/org/sablecc/sablecc/ResolveAltIds.java b/src/main/java/org/sablecc/sablecc/ResolveAltIds.java
index a8930adb2bdb80c0e38b746e30a0448a762400fa..7f9df741e1e9865648424a94c5bee52034c13688 100644
--- a/src/main/java/org/sablecc/sablecc/ResolveAltIds.java
+++ b/src/main/java/org/sablecc/sablecc/ResolveAltIds.java
@@ -135,7 +135,7 @@ public class ResolveAltIds extends DepthFirstAdapter
   @Override
   public String toString()
   {
-    StringBuffer s = new StringBuffer();
+    StringBuilder s = new StringBuilder();
     String nl = System.getProperty("line.separator");
 
     s.append("Alternative elements : ");
diff --git a/src/main/java/org/sablecc/sablecc/ResolveAstIds.java b/src/main/java/org/sablecc/sablecc/ResolveAstIds.java
index 98c48633e90cc1bf517723bf59a21154f5b9fe89..d3116a209a7e72222b356bb39167f51d342968c4 100644
--- a/src/main/java/org/sablecc/sablecc/ResolveAstIds.java
+++ b/src/main/java/org/sablecc/sablecc/ResolveAstIds.java
@@ -321,7 +321,7 @@ public class ResolveAstIds extends DepthFirstAdapter
   @Override
   public String toString()
   {
-    StringBuffer s = new StringBuffer();
+    StringBuilder s = new StringBuilder();
     String nl = System.getProperty("line.separator");
 
     s.append("Productions:");
diff --git a/src/main/java/org/sablecc/sablecc/ResolveIds.java b/src/main/java/org/sablecc/sablecc/ResolveIds.java
index 13480bf316f0d7053540b6c3794f03ce19a1d3a4..4e7ea9c8266ee72392aa0e3b1e8859c5b471ee82 100644
--- a/src/main/java/org/sablecc/sablecc/ResolveIds.java
+++ b/src/main/java/org/sablecc/sablecc/ResolveIds.java
@@ -503,7 +503,7 @@ public class ResolveIds extends DepthFirstAdapter
 
   public static String name(String s)
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     boolean upcase = true;
     int length = s.length();
     char c;
@@ -539,7 +539,7 @@ public class ResolveIds extends DepthFirstAdapter
 
   public static String errorName(String s)
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     int length = s.length();
     char c;
 
@@ -615,7 +615,7 @@ public class ResolveIds extends DepthFirstAdapter
   @Override
   public String toString()
   {
-    StringBuffer s = new StringBuffer();
+    StringBuilder s = new StringBuilder();
     String nl = System.getProperty("line.separator");
 
     s.append("Helpers:");
diff --git a/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java b/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java
index 75f90f7976d2886cfb3939c088b614162f46dc88..cd2f224bf2ee3324ce384cd23c00a943c554181a 100644
--- a/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java
+++ b/src/main/java/org/sablecc/sablecc/ResolveTransformIds.java
@@ -1035,7 +1035,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
   @Override
   public String toString()
   {
-    StringBuffer s = new StringBuffer();
+    StringBuilder s = new StringBuilder();
     String nl = System.getProperty("line.separator");
 
     s.append("ast_elems");
diff --git a/src/main/java/org/sablecc/sablecc/SymbolSet.java b/src/main/java/org/sablecc/sablecc/SymbolSet.java
index e1371ebdb6cb9e5b9fffcea9c72d54c99ad2fc54..cf084443f6c1a92ab95a1933a10e5d80fe8635dd 100644
--- a/src/main/java/org/sablecc/sablecc/SymbolSet.java
+++ b/src/main/java/org/sablecc/sablecc/SymbolSet.java
@@ -163,7 +163,7 @@ final class SymbolSet implements Cloneable
   @Override
   public String toString()
   {
-    StringBuffer result = new StringBuffer();
+    StringBuilder result = new StringBuilder();
     result.append("{");
 
     Symbol[] symbols = getSymbols();