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 5cea6a3..77ffafe 100644
--- a/dev/core/src/com/google/gwt/dev/util/Util.java
+++ b/dev/core/src/com/google/gwt/dev/util/Util.java
@@ -1003,7 +1003,7 @@
    * @param byteLength number of bytes to read
    * @return byte array containing the bytes read or <code>null</code> if
    *         there is an {@link IOException} or if the requested number of bytes 
-   *         can not be read from the {@link InputStream}
+   *         cannot be read from the {@link InputStream}
    */
   private static byte[] readBytesFromInputStream(InputStream input,
       int byteLength) {
diff --git a/user/src/com/google/gwt/benchmarks/BenchmarkReport.java b/user/src/com/google/gwt/benchmarks/BenchmarkReport.java
index 07ea13a..7f17f3a 100644
--- a/user/src/com/google/gwt/benchmarks/BenchmarkReport.java
+++ b/user/src/com/google/gwt/benchmarks/BenchmarkReport.java
@@ -157,7 +157,7 @@
      * 
      * @param logger to log the process
      * @param method a not <code>null</code> method
-     * @return <code>null</code> if the source code for the method can not be
+     * @return <code>null</code> if the source code for the method cannot be
      *         located
      */
     public String getMethod(TreeLogger logger, JMethod method) {
diff --git a/user/src/com/google/gwt/http/client/RequestPermissionException.java b/user/src/com/google/gwt/http/client/RequestPermissionException.java
index 1604b26..b6a27c3 100644
--- a/user/src/com/google/gwt/http/client/RequestPermissionException.java
+++ b/user/src/com/google/gwt/http/client/RequestPermissionException.java
@@ -38,7 +38,7 @@
   /**
    * Constructs an instance of this class for the given URL.
    * 
-   * @param url the URL which can not be accessed
+   * @param url the URL which cannot be accessed
    */
   public RequestPermissionException(String url) {
     super("The URL " + url
@@ -48,7 +48,7 @@
   }
 
   /**
-   * Returns the URL which we can not access.
+   * Returns the URL which we cannot access.
    * 
    * @return the URL which we cannot access.
    */
diff --git a/user/src/com/google/gwt/http/client/StringValidator.java b/user/src/com/google/gwt/http/client/StringValidator.java
index 1ea735f..1ef9e98 100644
--- a/user/src/com/google/gwt/http/client/StringValidator.java
+++ b/user/src/com/google/gwt/http/client/StringValidator.java
@@ -49,7 +49,7 @@
     throwIfNull(name, value);
 
     if (0 == value.trim().length()) {
-      throw new IllegalArgumentException(name + " can not be empty");
+      throw new IllegalArgumentException(name + " cannot be empty");
     }
   }
 
@@ -63,7 +63,7 @@
    */
   public static void throwIfNull(String name, String value) {
     if (null == value) {
-      throw new NullPointerException(name + " can not be null");
+      throw new NullPointerException(name + " cannot be null");
     }
   }
 
diff --git a/user/src/com/google/gwt/user/client/DeferredCommand.java b/user/src/com/google/gwt/user/client/DeferredCommand.java
index 8d2da00..9fe21d4 100644
--- a/user/src/com/google/gwt/user/client/DeferredCommand.java
+++ b/user/src/com/google/gwt/user/client/DeferredCommand.java
@@ -51,7 +51,7 @@
    */
   public static void addCommand(Command cmd) {
     if (cmd == null) {
-      throw new NullPointerException("cmd can not be null");
+      throw new NullPointerException("cmd cannot be null");
     }
 
     commandExecutor.submit(cmd);
@@ -69,7 +69,7 @@
    */
   public static void addCommand(IncrementalCommand cmd) {
     if (cmd == null) {
-      throw new NullPointerException("cmd can not be null");
+      throw new NullPointerException("cmd cannot be null");
     }
 
     commandExecutor.submit(cmd);
