diff --git a/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableMethodCreator.java b/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableMethodCreator.java
index c94f323..19e7c9e 100644
--- a/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableMethodCreator.java
+++ b/user/src/com/google/gwt/i18n/rebind/AbstractLocalizableMethodCreator.java
@@ -36,7 +36,9 @@
     super(classCreator);
   }
 
-  /** Enables caching to store computed values. */
+  /**
+   * Enables caching to store computed values.
+   */
   protected void enableCache() {
     ((ConstantsImplCreator) currentCreator).setNeedCache(true);
   }
diff --git a/user/src/com/google/gwt/i18n/rebind/ConstantsMapMethodCreator.java b/user/src/com/google/gwt/i18n/rebind/ConstantsMapMethodCreator.java
index 53d80f4..3a23bce 100644
--- a/user/src/com/google/gwt/i18n/rebind/ConstantsMapMethodCreator.java
+++ b/user/src/com/google/gwt/i18n/rebind/ConstantsMapMethodCreator.java
@@ -22,7 +22,9 @@
 
 import java.util.MissingResourceException;
 
-/** Creator for methods of the form Map getX() . */
+/**
+ * Creator for methods of the form Map getX() .
+ */
 class ConstantsMapMethodCreator extends AbstractLocalizableMethodCreator {
   /**
    * Constructor for localizable returnType method creator.
@@ -43,18 +45,18 @@
   public void createMethodFor(TreeLogger logger, JMethod method,
       final String value) throws UnableToCompleteException {
     String methodName = method.getName();
-    
+
     if (method.getParameters().length > 0) {
       error(
-        logger,
-        methodName
-          + " cannot have parameters; extend Messages instead if you need to create parameterized messages");
+          logger,
+          methodName
+              + " cannot have parameters; extend Messages instead if you need to create parameterized messages");
     }
     // make sure cache exists
     enableCache();
     // check cache for array
     println("java.util.Map args = (java.util.Map) cache.get("
-      + wrap(methodName) + ");");
+        + wrap(methodName) + ");");
     // if not found create Map
     println("if (args == null){");
     indent();
@@ -68,7 +70,7 @@
         println("args.put(" + wrap(key) + ", " + wrap(keyValue) + ");");
       } catch (MissingResourceException e) {
         String msg = "While implementing map for " + method.getName()
-          + "(), could not find key '" + args[i] + "'";
+            + "(), could not find key '" + args[i] + "'";
         throw error(logger, msg);
       }
     }
diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java
index 9b060fd..9bfb4e8 100644
--- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java
+++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java
@@ -516,7 +516,9 @@
     }
   }
 
-  /** Attribute name to store hash. */
+  /**
+   * Attribute name to store hash.
+   */
   private static final String HASH_ATTR = "__hash";
 
   /**
diff --git a/user/src/com/google/gwt/user/client/ui/Tree.java b/user/src/com/google/gwt/user/client/ui/Tree.java
index f249bfb..13d8df7 100644
--- a/user/src/com/google/gwt/user/client/ui/Tree.java
+++ b/user/src/com/google/gwt/user/client/ui/Tree.java
@@ -502,7 +502,9 @@
     FocusPanel.impl.setTabIndex(focusable, index);
   }
 
-  /** Iterator of tree items. */
+  /**
+   * Iterator of tree items.
+   */
   public Iterator treeItemIterator() {
     List accum = new ArrayList();
     root.addTreeItems(accum);
diff --git a/user/src/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java b/user/src/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java
index c3bda0a..9007912 100644
--- a/user/src/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java
+++ b/user/src/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java
@@ -136,7 +136,9 @@
     return superClassName;
   }
 
-  /** This class is an interface. */
+  /**
+   * This class is an interface.
+   */
   public void makeInterface() {
     classCategory = JavaSourceCategory.INTERFACE;
   }
