diff --git a/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java b/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java
index a56da3d..9975619 100644
--- a/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java
+++ b/dev/core/src/com/google/gwt/dev/shell/tomcat/CommonsLoggerAdapter.java
@@ -17,6 +17,9 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 
+/**
+ * Maps Tomcat's commons logger onto the GWT shell's tree logger.
+ */
 public class CommonsLoggerAdapter implements org.apache.commons.logging.Log {
 
   private TreeLogger log;
diff --git a/dev/core/src/com/google/gwt/dev/util/FileOracleFactory.java b/dev/core/src/com/google/gwt/dev/util/FileOracleFactory.java
index 7c1246b..70d80e1 100644
--- a/dev/core/src/com/google/gwt/dev/util/FileOracleFactory.java
+++ b/dev/core/src/com/google/gwt/dev/util/FileOracleFactory.java
@@ -292,7 +292,8 @@
    * 
    * @param logger Logs the process.
    * @param filter If non-null, filters out which files get indexed.
-   * @param url The URL to index, must be "file:" or "jar:file:"
+   * @param url The URL to index, must be <code>file:</code> or
+   *          <code>jar:file:</code>
    * @param pkgBase A prefix to exclude when indexing children.
    * @param logicalNames An output List of Children found under this URL.
    * @param logicalToPhysical An output Map of Children found under this URL
@@ -334,7 +335,7 @@
           // From each child, strip off the leading classpath portion when
           // determining the logical name (sans the pkgBase name we want!)
           //
-          indexJar(logger, filter, "jar:" + jarPath, jarFile, dirPath, pkgBase,
+          indexJar(logger, filter, "jar" + ":" + jarPath, jarFile, dirPath, pkgBase,
               logicalNames, logicalToPhysical);
         } else {
           logger.log(TreeLogger.WARN, "Unexpected error, jar at " + jarURL
diff --git a/dev/core/src/com/google/gwt/dev/util/HttpHeaders.java b/dev/core/src/com/google/gwt/dev/util/HttpHeaders.java
index a29ecbb..6d48d06 100644
--- a/dev/core/src/com/google/gwt/dev/util/HttpHeaders.java
+++ b/dev/core/src/com/google/gwt/dev/util/HttpHeaders.java
@@ -22,6 +22,9 @@
 import java.util.Date;
 import java.util.Locale;
 
+/**
+ * Groups predefined magic HTTP header strings.
+ */
 public final class HttpHeaders {
 
   public static final String IF_MODIFIED_SINCE = "If-Modified-Since";
diff --git a/dev/core/src/com/google/gwt/dev/util/Jsni.java b/dev/core/src/com/google/gwt/dev/util/Jsni.java
index 63f9525..9c89fa1 100644
--- a/dev/core/src/com/google/gwt/dev/util/Jsni.java
+++ b/dev/core/src/com/google/gwt/dev/util/Jsni.java
@@ -45,6 +45,9 @@
  */
 public class Jsni {
 
+  /**
+   * Represents a logical interval of text.
+   */
   public static class Interval {
 
     public final int end;
diff --git a/dev/core/src/com/google/gwt/dev/util/NetProxy.java b/dev/core/src/com/google/gwt/dev/util/NetProxy.java
index 1d3332f..79a5096 100644
--- a/dev/core/src/com/google/gwt/dev/util/NetProxy.java
+++ b/dev/core/src/com/google/gwt/dev/util/NetProxy.java
@@ -21,6 +21,9 @@
 import java.net.ServerSocket;
 import java.net.Socket;
 
+/**
+ * A blind byte-by-byte bi-directional proxy.
+ */
 public class NetProxy {
 
   private class ClientToServerProxyConnection extends ProxyConnection {
diff --git a/dev/core/src/com/google/gwt/dev/util/TextOutputOnCharArray.java b/dev/core/src/com/google/gwt/dev/util/TextOutputOnCharArray.java
index 3bc0317..2376b2c 100644
--- a/dev/core/src/com/google/gwt/dev/util/TextOutputOnCharArray.java
+++ b/dev/core/src/com/google/gwt/dev/util/TextOutputOnCharArray.java
@@ -19,6 +19,9 @@
 import java.io.PrintWriter;
 import java.util.Arrays;
 
+/**
+ * Implements {@link TextOutput} on top of a character array.
+ */
 public class TextOutputOnCharArray implements TextOutput {
 
   private final CharArrayWriter charArrayWriter;
diff --git a/dev/core/src/com/google/gwt/dev/util/Util.java b/dev/core/src/com/google/gwt/dev/util/Util.java
index 24e2b99..14ef65f 100644
--- a/dev/core/src/com/google/gwt/dev/util/Util.java
+++ b/dev/core/src/com/google/gwt/dev/util/Util.java
@@ -65,10 +65,6 @@
  */
 public final class Util {
 
-  public static interface MapParserCallback {
-    void parsed(String key, String value);
-  }
-
   public static String DEFAULT_ENCODING = "UTF-8";
 
   public static final File[] EMPTY_ARRAY_FILE = new File[0];
diff --git a/dev/core/src/com/google/gwt/dev/util/log/Loggers.java b/dev/core/src/com/google/gwt/dev/util/log/Loggers.java
index ddedbe6..8508017 100644
--- a/dev/core/src/com/google/gwt/dev/util/log/Loggers.java
+++ b/dev/core/src/com/google/gwt/dev/util/log/Loggers.java
@@ -19,6 +19,9 @@
 
 import java.net.URL;
 
+/**
+ * Utility methods for creating various sorts of loggers.
+ */
 public class Loggers {
 
   /**
diff --git a/dev/core/src/com/google/gwt/dev/util/log/TreeItemLogger.java b/dev/core/src/com/google/gwt/dev/util/log/TreeItemLogger.java
index 9bfce42..4994ba3 100644
--- a/dev/core/src/com/google/gwt/dev/util/log/TreeItemLogger.java
+++ b/dev/core/src/com/google/gwt/dev/util/log/TreeItemLogger.java
@@ -35,6 +35,9 @@
  */
 public final class TreeItemLogger extends AbstractTreeLogger {
 
+  /**
+   * Represents an individual log event.
+   */
   public static class LogEvent {
     public final Throwable caught;
 
diff --git a/dev/core/src/com/google/gwt/dev/util/xml/DefaultSchema.java b/dev/core/src/com/google/gwt/dev/util/xml/DefaultSchema.java
index d5d8594..ed3c887 100644
--- a/dev/core/src/com/google/gwt/dev/util/xml/DefaultSchema.java
+++ b/dev/core/src/com/google/gwt/dev/util/xml/DefaultSchema.java
@@ -20,6 +20,10 @@
 
 import java.lang.reflect.Method;
 
+/**
+ * A base class for parsing XML that registers standard converters and throws
+ * exceptions.
+ */
 public class DefaultSchema extends Schema {
 
   private final TreeLogger logger;
diff --git a/dev/core/src/com/google/gwt/dev/util/xml/HandlerArgs.java b/dev/core/src/com/google/gwt/dev/util/xml/HandlerArgs.java
index 3cafa9a..9c564b3 100644
--- a/dev/core/src/com/google/gwt/dev/util/xml/HandlerArgs.java
+++ b/dev/core/src/com/google/gwt/dev/util/xml/HandlerArgs.java
@@ -56,7 +56,6 @@
    * @return the argument converted to a form that is expected to compatible
    *         with the associated parameter and will work for a reflection
    *         "invoke()" call
-   * @throws UnableToCompleteException if the argument could not be converted
    */
   public Object convertToArg(int i) throws UnableToCompleteException {
     String value = argValues[i];
diff --git a/dev/core/src/com/google/gwt/dev/util/xml/HandlerClassInfo.java b/dev/core/src/com/google/gwt/dev/util/xml/HandlerClassInfo.java
index 5aa0e38..67aba72 100644
--- a/dev/core/src/com/google/gwt/dev/util/xml/HandlerClassInfo.java
+++ b/dev/core/src/com/google/gwt/dev/util/xml/HandlerClassInfo.java
@@ -19,6 +19,9 @@
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * Retains parsed information about a particular schema clas.
+ */
 public class HandlerClassInfo {
   private static final HandlerMethod[] EMPTY_ARRAY_HANDLERMETHOD = new HandlerMethod[0];
   private static Map sClassInfoMap = new HashMap();
