Cherry picking bug fixes from trunk into release branch: 982801, 986802, 990801, 971801, 976802.


git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/2.1@9051 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/SymbolData.java b/dev/core/src/com/google/gwt/core/ext/linker/SymbolData.java
index a3d0f90..368acec 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/SymbolData.java
+++ b/dev/core/src/com/google/gwt/core/ext/linker/SymbolData.java
@@ -81,7 +81,7 @@
   }
   
   /**
-   * Returns a JSON map of castableTypes
+   * Returns a JSON map of castableTypes.
    */
   CastableTypeMap getCastableTypeMap();
 
diff --git a/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java b/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java
index b0cca42..c701dfb 100644
--- a/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java
+++ b/dev/core/src/com/google/gwt/core/ext/typeinfo/TypeOracle.java
@@ -494,7 +494,7 @@
   }
 
   /**
-   * @Deprecated This method will always return 0 because a TypeOracle never
+   * @deprecated This method will always return 0 because a TypeOracle never
    *             gets reloaded anymore. Callers should not rely on this value to
    *             manage static state.
    */
diff --git a/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java b/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
index 861091c..eeea37e 100644
--- a/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
+++ b/dev/core/src/com/google/gwt/core/linker/CrossSiteIframeLinker.java
@@ -66,7 +66,7 @@
   protected byte[] generatePrimaryFragment(TreeLogger logger,
       LinkerContext context, CompilationResult result, String[] js) {
     TextOutput script = new DefaultTextOutput(context.isOutputCompact());
-    script.print(getModulePrefix(context, result.getStrongName(), js.length > 1));
+    script.print(getModulePrefix(context, result.getStrongName()));
     script.print(js[0]);
     script.print(getModuleSuffix(logger, context));
     StringBuffer out = new StringBuffer();
@@ -194,8 +194,7 @@
     return "com/google/gwt/core/linker/CrossSiteIframeTemplate.js";
   }
 
-  private String getModulePrefix(LinkerContext context, String strongName,
-      boolean supportRunAsync) {
+  private String getModulePrefix(LinkerContext context, String strongName) {
     TextOutput out = new DefaultTextOutput(context.isOutputCompact());
     out.print("var __gwtModuleFunction = $wnd." + context.getModuleFunctionName() + ";");
     out.newlineOpt();
diff --git a/dev/core/src/com/google/gwt/dev/Precompile.java b/dev/core/src/com/google/gwt/dev/Precompile.java
index 5b11870..2febeac 100644
--- a/dev/core/src/com/google/gwt/dev/Precompile.java
+++ b/dev/core/src/com/google/gwt/dev/Precompile.java
@@ -388,6 +388,7 @@
       setDaemon(true);
     }
 
+    @Override
     public void run() {
       SpeedTracerLogger.Event createGraphicsEvent = SpeedTracerLogger.start(
           CompilerEventType.GRAPHICS_INIT, "java.awt.headless",
diff --git a/dev/core/src/com/google/gwt/dev/jdt/AbstractCompiler.java b/dev/core/src/com/google/gwt/dev/jdt/AbstractCompiler.java
index 34f2223..572f539 100644
--- a/dev/core/src/com/google/gwt/dev/jdt/AbstractCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/jdt/AbstractCompiler.java
@@ -638,22 +638,28 @@
     }
   }
 
-  @SuppressWarnings("unused")
-  // overrider may use unused parameter
+  /**
+   * @param logger a {@link TreeLogger}
+   * @param cud a {@link CompilationUnitDeclaration}
+   */
   protected String[] doFindAdditionalTypesUsingArtificialRescues(
       TreeLogger logger, CompilationUnitDeclaration cud) {
     return Empty.STRINGS;
   }
 
-  @SuppressWarnings("unused")
-  // overrider may use unused parameter
+  /**
+   * @param logger a {@link TreeLogger}
+   * @param cud a {@link CompilationUnitDeclaration}
+   */
   protected String[] doFindAdditionalTypesUsingJsni(TreeLogger logger,
       CompilationUnitDeclaration cud) {
     return Empty.STRINGS;
   }
 
-  @SuppressWarnings("unused")
-  // overrider may use unused parameter
+  /**
+   * @param logger a {@link TreeLogger}
+   * @param cud a {@link CompilationUnitDeclaration}
+   */
   protected String[] doFindAdditionalTypesUsingRebinds(TreeLogger logger,
       CompilationUnitDeclaration cud) {
     return Empty.STRINGS;
diff --git a/dev/core/src/com/google/gwt/dev/jdt/TypeRefVisitor.java b/dev/core/src/com/google/gwt/dev/jdt/TypeRefVisitor.java
index 3894777..b1c3a88 100644
--- a/dev/core/src/com/google/gwt/dev/jdt/TypeRefVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/jdt/TypeRefVisitor.java
@@ -153,7 +153,11 @@
     return true;
   }
 
-  @SuppressWarnings("unused")
+  /**
+   * @param referencedType
+   * @param unitOfReferrer
+   * @param expression
+   */
   protected void onBinaryTypeRef(BinaryTypeBinding referencedType,
       CompilationUnitDeclaration unitOfReferrer, Expression expression) {
   }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
index e324a30..923734f 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -248,6 +248,7 @@
         this.childClass = childClass;
       }
 
+      @Override
       public boolean equals(Object obj) {
         if (obj instanceof MethodKey) {
           MethodKey otherKey = (MethodKey) obj;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/OptimizerStats.java b/dev/core/src/com/google/gwt/dev/jjs/impl/OptimizerStats.java
index 9cf7e6b..60611f2 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/OptimizerStats.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/OptimizerStats.java
@@ -88,7 +88,7 @@
   }
 
   /**
-   * Return a human readable string representing the values of all statistics
+   * Return a human-readable string representing the values of all statistics.
    */
   public String prettyPrint() {
     StringBuilder builder = new StringBuilder();
diff --git a/dev/core/src/com/google/gwt/dev/json/JsonObject.java b/dev/core/src/com/google/gwt/dev/json/JsonObject.java
index a5b9fe5..34a01ce 100644
--- a/dev/core/src/com/google/gwt/dev/json/JsonObject.java
+++ b/dev/core/src/com/google/gwt/dev/json/JsonObject.java
@@ -75,7 +75,7 @@
     int c = tokenizer.nextNonWhitespace();
     if (c != '{') {
       throw new JsonException("Payload does not begin with '{'.  Got " + c + "("
-          + Character.valueOf((char)c) + ")");
+          + Character.valueOf((char) c) + ")");
     }
 
     while (true) {
diff --git a/dev/core/src/com/google/gwt/dev/json/JsonValue.java b/dev/core/src/com/google/gwt/dev/json/JsonValue.java
index 9d37d7b..a6f827b 100644
--- a/dev/core/src/com/google/gwt/dev/json/JsonValue.java
+++ b/dev/core/src/com/google/gwt/dev/json/JsonValue.java
@@ -25,7 +25,7 @@
   /**
    * JSON placeholder for null.
    */
-  final JsonValue NULL = new JsonValue() {
+  JsonValue NULL = new JsonValue() {
 
     public JsonArray asArray() {
       return null;
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java b/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
index b746913..e899f0e 100644
--- a/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
+++ b/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
@@ -49,7 +49,9 @@
 
   @Override
   public String getLocation() {
+    // CHECKSTYLE_OFF
     return "jar:" + classPathEntry.getLocation() + "!/" + path;
+    // CHECKSTYLE_ON
   }
 
   @Override
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
index 4987dc2..2246977 100644
--- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
+++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
@@ -361,7 +361,6 @@
             // Try to initialize EntryPoint, else throw up glass panel
             try {
               Class<?> clazz = loadClassFromSourceName(entryPointTypeName);
-              onModuleLoad = null;
               try {
                 onModuleLoad = clazz.getMethod("onModuleLoad");
                 if (!Modifier.isStatic(onModuleLoad.getModifiers())) {
diff --git a/dev/core/src/com/google/gwt/dev/util/editdistance/CharIndex.java b/dev/core/src/com/google/gwt/dev/util/editdistance/CharIndex.java
index 097ccb5..3e76d4d 100644
--- a/dev/core/src/com/google/gwt/dev/util/editdistance/CharIndex.java
+++ b/dev/core/src/com/google/gwt/dev/util/editdistance/CharIndex.java
@@ -47,13 +47,13 @@
    */
   public static class FullHash extends CharIndex {
     /**
-     * Mutable holder for a character
+     * Mutable holder for a character.
      */
     static class Char {
       char c;
       @Override
       public boolean equals(Object x) {
-        return (x != null) && (((Char)x).c == this.c);
+        return (x != null) && (((Char) x).c == this.c);
       }
       @Override
       public int hashCode() {
@@ -68,12 +68,12 @@
     static final int NULL_ELEMENT = 0;
     protected int lastUsed = NULL_ELEMENT;
     /**
-     * Mapping from pattern characters to their integer index values
+     * Mapping from pattern characters to their integer index values.
      */
     final java.util.HashMap<Char,Integer> map;
 
     /**
-     * Constructs a full hash-based mapping
+     * Constructs a full hash-based mapping.
      */
     FullHash(CharSequence s) {
       /* Choose a hash size larger at least twice the string length */
@@ -148,21 +148,20 @@
    */
   public static class Masked extends CharIndex {
     /**
-     * Hash table size
+     * Hash table size.
      */
     static final int SIZE = 0x100;
 
     /**
-     * Mask used for hashing
+     * Mask used for hashing.
      */
     static final int MASK = (SIZE - 1);
 
     /**
-     * Where we may invalid characters: beyond the hash table
+     * Where we may invalid characters: beyond the hash table.
      */
     static final int NULL_ELEMENT = SIZE;
 
-
     /**
      * Generates an instance of this implementation if possible.
      * @param s pattern string
@@ -177,7 +176,7 @@
       char [] contains = new char[SIZE];
 
       /* Ensure that for all x, hash(contains[x]) != x initially. */
-      contains[0] = (char)1;
+      contains[0] = (char) 1;
 
       /* Hash characters, recording values seen, rejecting collisions */
       for (int i = 0; i < s.length(); i++) {
@@ -200,7 +199,7 @@
     final char[] contains;
 
     /**
-     * Constructor based on hash table built by generate()
+     * Constructor based on hash table built by generate().
      */
     private Masked(char [] contains) {
       this.contains = contains;
@@ -215,7 +214,9 @@
     @Override
     public int[] map(CharSequence s, int[] mapped) {
       int len = s.length();
-      if (mapped.length < len) mapped = new int[len];
+      if (mapped.length < len) {
+        mapped = new int[len];
+      }
       for (int i = 0; i < len; i++) {
         char c = s.charAt(i);
         int index = c & MASK;
@@ -238,21 +239,20 @@
    */
   public static class Straight extends CharIndex {
     /**
-     * The largest character we will map (directly)
+     * The largest character we will map (directly).
      */
     static final int MAX = 0x80;
 
     /** 
-     * A mask used to find characters that fall outside
+     * A mask used to find characters that fall outside.
      */
     static final int MASK = ~(MAX - 1);
 
     /**
-     * A map result we never generate for valid characters
+     * A map result we never generate for valid characters.
      */
     static final int NULL_ELEMENT = MAX;
 
-
     /**
      * Generates an instance of this implementation if possible.
      * @param s pattern string
@@ -271,7 +271,7 @@
     }
 
     /**
-     * Simple private constructor, no state required
+     * Simple private constructor, no state required.
      */
     private Straight() { }
 
@@ -283,7 +283,9 @@
     @Override
     public int[] map(CharSequence s, int[] mapped) {
       int len = s.length();
-      if (mapped.length < len) mapped = new int[len];
+      if (mapped.length < len) {
+        mapped = new int[len];
+      }
       for (int i = 0; i < len; i++) {
         char c = s.charAt(i);
         mapped[i] = ((c & MASK) == 0) ? c : NULL_ELEMENT;
diff --git a/dev/core/src/com/google/gwt/dev/util/editdistance/GeneralEditDistances.java b/dev/core/src/com/google/gwt/dev/util/editdistance/GeneralEditDistances.java
index 32ebde2..2dcfae5 100644
--- a/dev/core/src/com/google/gwt/dev/util/editdistance/GeneralEditDistances.java
+++ b/dev/core/src/com/google/gwt/dev/util/editdistance/GeneralEditDistances.java
@@ -58,22 +58,22 @@
    */
   private static class Levenshtein implements GeneralEditDistance {
     /**
-     * Long+bounded implementation class: distance-only Berghel-Roach
+     * Long+bounded implementation class: distance-only Berghel-Roach.
      */
     private ModifiedBerghelRoachEditDistance berghel;
 
     /**
-     * Short/unbounded implementation class: Myers bit-parallel
+     * Short/unbounded implementation class: Myers bit-parallel.
      */
     private MyersBitParallelEditDistance myers;
 
     /**
-     * Saved pattern, for specialized comparisons
+     * Saved pattern, for specialized comparisons.
      */    
     private final CharSequence pattern;
 
     /**
-     * Length of saved pattern
+     * Length of saved pattern.
      */
     private final int patternLength;
 
diff --git a/dev/core/src/com/google/gwt/dev/util/editdistance/ModifiedBerghelRoachEditDistance.java b/dev/core/src/com/google/gwt/dev/util/editdistance/ModifiedBerghelRoachEditDistance.java
index de61af5..b305b30 100644
--- a/dev/core/src/com/google/gwt/dev/util/editdistance/ModifiedBerghelRoachEditDistance.java
+++ b/dev/core/src/com/google/gwt/dev/util/editdistance/ModifiedBerghelRoachEditDistance.java
@@ -209,7 +209,7 @@
   private int[] lastRight = EMPTY_INT_ARRAY;
 
   /**
-   * The "pattern" string against which others are compared
+   * The "pattern" string against which others are compared.
    */
   private final char[] pattern;
 
@@ -320,7 +320,6 @@
             immediateRight);
       }
 
-
       /*
        * Lower-numbered diagonals
        */
diff --git a/dev/core/src/com/google/gwt/dev/util/editdistance/MyersBitParallelEditDistance.java b/dev/core/src/com/google/gwt/dev/util/editdistance/MyersBitParallelEditDistance.java
index 9e02ebd..febd160 100644
--- a/dev/core/src/com/google/gwt/dev/util/editdistance/MyersBitParallelEditDistance.java
+++ b/dev/core/src/com/google/gwt/dev/util/editdistance/MyersBitParallelEditDistance.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.dev.util.editdistance;
 
-
 /**
  * Computes Levenshtein string-edit distance using the
  * algorithm of Eugene Myers (see "A fast bit-vector algorithm for
@@ -136,7 +135,7 @@
    */
 
   /**
-   * A trivial implementation for the zero-length string
+   * A trivial implementation for the zero-length string.
    */
   static class Empty extends MyersBitParallelEditDistance {
     Empty(CharSequence s) {
@@ -166,12 +165,12 @@
     int count;
     
     /**
-     * Where the last-row bit lives -- only in the last array slot, though
+     * Where the last-row bit lives -- only in the last array slot, though.
      */
     final int lastBitPosition;
 
     /**
-     * Bitmaps for pattern string: [pattern_index][column_index]
+     * Bitmaps for pattern string: [pattern_index][column_index].
      */
     final int[][] positions;
 
@@ -180,17 +179,17 @@
     int[] verticalPositivesReusable;
 
     /**
-     * A mask with those bits set
+     * A mask with those bits set.
      */
     final int wordMask = (-1 >>> 1);
 
     /**
-     * How many bits we use per word
+     * How many bits we use per word.
      */
     final int wordSize = Integer.SIZE - 1;
 
     /**
-     * Constructs a multi-word engine
+     * Constructs a multi-word engine.
      */
     Multi(CharSequence s) {
       super(s);
@@ -223,7 +222,9 @@
 
       /* We can only miss the distance-- below this many times: */
       int maxMisses = k + len - m;
-      if (maxMisses < 0) maxMisses = Integer.MAX_VALUE;
+      if (maxMisses < 0) {
+        maxMisses = Integer.MAX_VALUE;
+      }
 
       outer:
       for (int j = 0; j < len; j++) {
@@ -311,7 +312,7 @@
       /* Precompute bitmaps for this pattern */
       map = PatternBitmap.map(s, idx, new int/*WORD*/[idx.size()]);
       /* Compute the bit that represents a change in the last row */
-      lastBitPosition = (((int/*WORD*/)1) << (m - 1));
+      lastBitPosition = (((int/*WORD*/) 1) << (m - 1));
     }
 
     @Override
@@ -319,8 +320,9 @@
       int len = s.length();
 
       /* Quick check based on length */
-      if (((len - m) > k) || ((m - len) > k))
+      if (((len - m) > k) || ((m - len) > k)) {
         return k + 1;
+      }
 
       /* Map characters to their integer positions in the bitmap array */
       indices = idx.map(s, indices);
@@ -332,7 +334,9 @@
 
       /* We can only miss the "distance--" below this many times: */
       int maxMisses = k + len - m;
-      if (maxMisses < 0) maxMisses = Integer.MAX_VALUE;
+      if (maxMisses < 0) {
+        maxMisses = Integer.MAX_VALUE;
+      }
 
       for (int j = 0; j < len; j++) {
         /* Where is diagonal zero: matches, or prior VN; plus recursion */
@@ -376,13 +380,12 @@
     final long/*WORD*/ lastBitPosition;
     final long/*WORD*/[] map;
 
-    @SuppressWarnings("cast")
     TYPElong/*WORD*/(CharSequence s) {
       super(s);
       /* Precompute bitmaps for this pattern */
       map = PatternBitmap.map(s, idx, new long/*WORD*/[idx.size()]);
       /* Compute the bit that represents a change in the last row */
-      lastBitPosition = (((long/*WORD*/)1) << (m - 1));
+      lastBitPosition = (((long/*WORD*/) 1) << (m - 1));
     }
 
     @Override
@@ -390,8 +393,9 @@
       int len = s.length();
 
       /* Quick check based on length */
-      if (((len - m) > k) || ((m - len) > k))
+      if (((len - m) > k) || ((m - len) > k)) {
         return k + 1;
+      }
 
       /* Map characters to their integer positions in the bitmap array */
       indices = idx.map(s, indices);
@@ -403,7 +407,9 @@
 
       /* We can only miss the "distance--" below this many times: */
       int maxMisses = k + len - m;
-      if (maxMisses < 0) maxMisses = Integer.MAX_VALUE;
+      if (maxMisses < 0) {
+        maxMisses = Integer.MAX_VALUE;
+      }
 
       for (int j = 0; j < len; j++) {
         /* Where is diagonal zero: matches, or prior VN; plus recursion */
@@ -453,7 +459,7 @@
   }
 
   /**
-   * Tests a computation manually
+   * Tests a computation manually.
    */
   public static void main(String[] args) {
     MyersBitParallelEditDistance b = getInstance(args[0]);
@@ -462,22 +468,22 @@
   }
 
   /**
-   * Index mapping for pattern string
+   * Index mapping for pattern string.
    */
   final CharIndex idx;
 
   /**
-   * Reusable array of indices for target strings
+   * Reusable array of indices for target strings.
    */
   int[] indices = new int[0];
 
   /**
-   * Length of pattern
+   * Length of pattern.
    */
   final int m;
 
   /**
-   * Constructs a distance calculator for a given string
+   * Constructs a distance calculator for a given string.
    */
   protected MyersBitParallelEditDistance(CharSequence s) {
     m = s.length();
@@ -486,7 +492,7 @@
 
   public GeneralEditDistance duplicate() {
     try {
-      return (MyersBitParallelEditDistance)clone();
+      return (MyersBitParallelEditDistance) clone();
     } catch (CloneNotSupportedException x) { /*IMPOSSIBLE */
       throw new IllegalStateException("Cloneable object would not clone");
     }
@@ -494,7 +500,7 @@
 
   /**
    * Computes distance from the pattern to a given string, bounded by
-   * a limiting distance @see(GeneralEditDistance.getDistance(CharSequence,int))
+   * a limiting distance @see(GeneralEditDistance.getDistance(CharSequence,int)).
    */
   public abstract int getDistance(CharSequence s, int k);
 
@@ -503,13 +509,13 @@
     Object obj = super.clone();
 
     /* Re-initialize any non-thread-safe parts */
-    ((MyersBitParallelEditDistance)obj).perThreadInit();
+    ((MyersBitParallelEditDistance) obj).perThreadInit();
 
     return obj;
   }
 
   /**
-   * Initializes items that cannot be shared among threads
+   * Initializes items that cannot be shared among threads.
    */
   protected void perThreadInit() {
     indices = new int[0];
diff --git a/dev/core/src/com/google/gwt/dev/util/editdistance/PatternBitmap.java b/dev/core/src/com/google/gwt/dev/util/editdistance/PatternBitmap.java
index 5ee1733..9ee8454 100644
--- a/dev/core/src/com/google/gwt/dev/util/editdistance/PatternBitmap.java
+++ b/dev/core/src/com/google/gwt/dev/util/editdistance/PatternBitmap.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.dev.util.editdistance;
 
-
 /**
  * A bitmap array generator for the positions that a given character
  * appears within a pattern.  The array of bitmaps is indexed by a
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/PersonEditorWorkflow.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/PersonEditorWorkflow.java
index d7a7718..6e36f94 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/PersonEditorWorkflow.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/PersonEditorWorkflow.java
@@ -100,12 +100,12 @@
   }
 
   @UiHandler("cancel")
-  void onCancel(ClickEvent e) {
+  void onCancel(@SuppressWarnings("unused") ClickEvent event) {
     dialog.hide();
   }
 
   @UiHandler("save")
-  void onSave(ClickEvent e) {
+  void onSave(@SuppressWarnings("unused") ClickEvent event) {
     // MOVE TO ACTIVITY END
     RequestContext context = editorDriver.flush();
     if (editorDriver.hasErrors()) {
@@ -127,7 +127,7 @@
   }
 
   @UiHandler("favorite")
-  void onValueChanged(ValueChangeEvent<Boolean> event) {
+  void onValueChanged(@SuppressWarnings("unused") ValueChangeEvent<Boolean> event) {
     manager.setFavorite(person, favorite.getValue());
   }
 
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/MentorSelector.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/MentorSelector.java
index b48101f..7925ceb 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/MentorSelector.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/MentorSelector.java
@@ -74,7 +74,7 @@
   }
 
   @UiHandler("choose")
-  void onChoose(ClickEvent event) {
+  void onChoose(@SuppressWarnings("unused") ClickEvent event) {
     setEnabled(false);
     factory.schoolCalendarRequest().getRandomPerson().to(
         new Receiver<PersonProxy>() {
@@ -87,7 +87,7 @@
   }
 
   @UiHandler("clear")
-  void onClear(ClickEvent event) {
+  void onClear(@SuppressWarnings("unused") ClickEvent event) {
     setValue(null);
   }
 
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
index a71dc9b..348d2f2 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
@@ -162,8 +162,8 @@
     fetch(0);
   }
 
-  @UiHandler("create")
-  void onCreate(ClickEvent event) {
+  @UiHandler("create") 
+  void onCreate(@SuppressWarnings("unused") ClickEvent event) {
     PersonRequest context = requestFactory.personRequest();
     AddressProxy address = context.create(AddressProxy.class);
     PersonProxy person = context.edit(context.create(PersonProxy.class));
diff --git a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml
index f7e7269..77398a0 100644
--- a/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml
+++ b/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.ui.xml
@@ -9,6 +9,10 @@
       .thirty {
       	width: 30%
       }
+      
+      .table {
+      	width: 100%;
+      }
     </ui:style>
   <g:DockLayoutPanel ui:field="dock" unit="EX">
     <g:north size="6">
@@ -29,7 +33,7 @@
       </g:DockLayoutPanel>
     </g:north>
     <g:center>
-      <cv:CellTable ui:field="table" />
+      <cv:CellTable ui:field="table" stylePrimaryName="{style.table}" />
     </g:center>
   </g:DockLayoutPanel>
 </ui:UiBinder>
\ No newline at end of file
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java
index 0cff56c..a37c2fc 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpenseDetails.java
@@ -43,7 +43,6 @@
 import com.google.gwt.requestfactory.shared.EntityProxyChange;
 import com.google.gwt.requestfactory.shared.EntityProxyId;
 import com.google.gwt.requestfactory.shared.Receiver;
-import com.google.gwt.requestfactory.shared.Request;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.safehtml.client.SafeHtmlTemplates;
 import com.google.gwt.safehtml.shared.SafeHtml;
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesMobileShell.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesMobileShell.java
index cd848fc..f436c50 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesMobileShell.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/ExpensesMobileShell.java
@@ -76,26 +76,22 @@
   }
   
   @UiHandler("addButton")
-  @SuppressWarnings("unused")
-  void onAdd(ClickEvent evt) {
+  void onAdd(@SuppressWarnings("unused") ClickEvent evt) {
     topPage().onAdd();
   }
 
   @UiHandler("backButton")
-  @SuppressWarnings("unused")
-  void onBack(ClickEvent evt) {
+  void onBack(@SuppressWarnings("unused") ClickEvent evt) {
     popPage();
   }
 
   @UiHandler("customButton")
-  @SuppressWarnings("unused")
-  void onCustom(ClickEvent evt) {
+  void onCustom(@SuppressWarnings("unused") ClickEvent evt) {
     topPage().onCustom();
   }
 
   @UiHandler("refreshButton")
-  @SuppressWarnings("unused")
-  void onRefresh(ClickEvent evt) {
+  void onRefresh(@SuppressWarnings("unused") ClickEvent evt) {
     topPage().onRefresh(true);
   }
 
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseEntry.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseEntry.java
index 20721a1..5aeddba 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseEntry.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileExpenseEntry.java
@@ -52,6 +52,7 @@
 
   private ExpenseProxy expense;
   private final ExpensesRequestFactory requestFactory;
+  @SuppressWarnings("unused")
   private final Listener listener;
   private ExpenseRequest request;
 
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportEntry.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportEntry.java
index 80e562f..96194e5 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportEntry.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/client/MobileReportEntry.java
@@ -57,6 +57,7 @@
 
   private ReportProxy report;
   private final ExpensesRequestFactory requestFactory;
+  @SuppressWarnings("unused")
   private final Listener listener;
   private ReportRequest request;
 
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Employee.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Employee.java
index bc57930..de7b073 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Employee.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Employee.java
@@ -141,6 +141,7 @@
   private Integer version;
 
   @Transient
+  @SuppressWarnings("unused")
   private Employee supervisor;
 
   public String getDepartment() {
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Expense.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Expense.java
index 553c25d..f9ee1e2 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Expense.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Expense.java
@@ -110,6 +110,7 @@
   private String reasonDenied;
 
   @Transient
+  @SuppressWarnings("unused")
   private Report report;
 
   // @JoinColumn
diff --git a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java
index 5f28680..2975080 100644
--- a/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java
+++ b/samples/expenses/src/main/java/com/google/gwt/sample/expenses/server/domain/Report.java
@@ -338,9 +338,11 @@
   }
 
   @Transient
+  @SuppressWarnings("unused")
   private Employee approvedSupervisor;
 
   @Transient
+  @SuppressWarnings("unused")
   private Employee reporter;
 
   // @JoinColumn
diff --git a/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellList.java b/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellList.java
index 6df55c7..956e31d 100644
--- a/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellList.java
+++ b/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellList.java
@@ -33,6 +33,7 @@
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.cellview.client.CellList;
 import com.google.gwt.user.cellview.client.HasKeyboardPagingPolicy.KeyboardPagingPolicy;
+import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.AbstractImagePrototype;
 import com.google.gwt.user.client.ui.Button;
@@ -174,6 +175,7 @@
         ContactDatabase.ContactInfo.KEY_PROVIDER);
     cellList.setPageSize(30);
     cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
+    cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
 
     // Add a selection model so we can select cells.
     final SingleSelectionModel<ContactInfo> selectionModel = new SingleSelectionModel<ContactInfo>(
diff --git a/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellTable.ui.xml b/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellTable.ui.xml
index 6dded2d..c8b9518 100644
--- a/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellTable.ui.xml
+++ b/samples/showcase/src/com/google/gwt/sample/showcase/client/content/cell/CwCellTable.ui.xml
@@ -6,7 +6,6 @@
 
   <ui:style>
     .cellTable {
-      height: 400px;
       width: 600px;
       border: 1px solid #ccc;
       text-align: left;
diff --git a/user/src/com/google/gwt/activity/shared/Activity.java b/user/src/com/google/gwt/activity/shared/Activity.java
index e092e3f..a197523 100644
--- a/user/src/com/google/gwt/activity/shared/Activity.java
+++ b/user/src/com/google/gwt/activity/shared/Activity.java
@@ -53,7 +53,7 @@
   /**
    * Called when the Activity should ready its widget for the user. When the
    * widget is ready (typically after an RPC response has been received),
-   * receiver should present it by calling {@link AcceptsOneWidget#setWidget()}
+   * receiver should present it by calling {@link AcceptsOneWidget#setWidget}
    * on the given panel.
    * <p>
    * Any handlers attached to the provided event bus will be de-registered when
diff --git a/user/src/com/google/gwt/animation/client/Animation.java b/user/src/com/google/gwt/animation/client/Animation.java
index 40bae9a..bb3da8b 100644
--- a/user/src/com/google/gwt/animation/client/Animation.java
+++ b/user/src/com/google/gwt/animation/client/Animation.java
@@ -138,7 +138,7 @@
     // Add to the list of animations
 
     // We use a static list of animations and a single timer, and create them
-    // only if we are the only active animation.  This is safe since JS is
+    // only if we are the only active animation. This is safe since JS is
     // single-threaded.
     if (animations == null) {
       animations = new ArrayList<Animation>();
diff --git a/user/src/com/google/gwt/cell/client/ImageLoadingCell.java b/user/src/com/google/gwt/cell/client/ImageLoadingCell.java
index a22763f..10c1a24 100644
--- a/user/src/com/google/gwt/cell/client/ImageLoadingCell.java
+++ b/user/src/com/google/gwt/cell/client/ImageLoadingCell.java
@@ -81,7 +81,7 @@
   private static Template template;
 
   /**
-   * The default {@link Renderers}.
+   * The default {@link SafeHtmlRenderer SafeHtmlRenderers}.
    */
   public static class DefaultRenderers implements Renderers {
 
@@ -149,7 +149,7 @@
 
   /**
    * Construct an {@link ImageResourceCell} using the specified
-   * {@link Renderers}.
+   * {@link SafeHtmlRenderer SafeHtmlRenderers}.
    *
    */
   public ImageLoadingCell(Renderers renderers) {
diff --git a/user/src/com/google/gwt/core/client/Scheduler.java b/user/src/com/google/gwt/core/client/Scheduler.java
index ef6a090..7fceb6f 100644
--- a/user/src/com/google/gwt/core/client/Scheduler.java
+++ b/user/src/com/google/gwt/core/client/Scheduler.java
@@ -21,6 +21,8 @@
  * This class provides low-level task scheduling primitives. Any exceptions
  * thrown by the command objects executed by the scheduler will be passed to the
  * {@link GWT.UncaughtExceptionHandler} if one is installed.
+ * 
+ * @see com.google.gwt.core.client.testing.StubScheduler
  */
 public abstract class Scheduler {
 
diff --git a/user/src/com/google/gwt/core/client/testing/StubScheduler.java b/user/src/com/google/gwt/core/client/testing/StubScheduler.java
new file mode 100644
index 0000000..c59fc1a
--- /dev/null
+++ b/user/src/com/google/gwt/core/client/testing/StubScheduler.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2010 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.core.client.testing;
+
+import com.google.gwt.core.client.Scheduler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A no-op implementation of Scheduler that simply records its arguments.
+ */
+public class StubScheduler extends Scheduler {
+  private final List<RepeatingCommand> repeatingCommands = new ArrayList<RepeatingCommand>();
+
+  private final List<ScheduledCommand> scheduledCommands = new ArrayList<ScheduledCommand>();
+
+  /**
+   * Returns the RepeatingCommands that have been passed into the MockScheduler.
+   */
+  public List<RepeatingCommand> getRepeatingCommands() {
+    return repeatingCommands;
+  }
+
+  /**
+   * Returns the ScheduledCommands that have been passed into the MockScheduler.
+   */
+  public List<ScheduledCommand> getScheduledCommands() {
+    return scheduledCommands;
+  }
+
+  @Override
+  public void scheduleDeferred(ScheduledCommand cmd) {
+    scheduledCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleEntry(RepeatingCommand cmd) {
+    repeatingCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleEntry(ScheduledCommand cmd) {
+    scheduledCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleFinally(RepeatingCommand cmd) {
+    repeatingCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleFinally(ScheduledCommand cmd) {
+    scheduledCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleFixedDelay(RepeatingCommand cmd, int delayMs) {
+    repeatingCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleFixedPeriod(RepeatingCommand cmd, int delayMs) {
+    repeatingCommands.add(cmd);
+  }
+
+  @Override
+  public void scheduleIncremental(RepeatingCommand cmd) {
+    repeatingCommands.add(cmd);
+  }
+}
diff --git a/user/src/com/google/gwt/editor/client/AutoBean.java b/user/src/com/google/gwt/editor/client/AutoBean.java
index 58ed87d..8e20ef4 100644
--- a/user/src/com/google/gwt/editor/client/AutoBean.java
+++ b/user/src/com/google/gwt/editor/client/AutoBean.java
@@ -51,7 +51,8 @@
   <Q> Q getTag(String tagName);
 
   /**
-   * Returns <code>true</code> if {@link #freeze()} has been called.
+   * Returns the value most recently passed to {@link #setFrozen}, or false
+   * if it has never been called.
    */
   boolean isFrozen();
 
diff --git a/user/src/com/google/gwt/editor/client/AutoBeanVisitor.java b/user/src/com/google/gwt/editor/client/AutoBeanVisitor.java
index bfc5fc1..305d481 100644
--- a/user/src/com/google/gwt/editor/client/AutoBeanVisitor.java
+++ b/user/src/com/google/gwt/editor/client/AutoBeanVisitor.java
@@ -48,17 +48,43 @@
     void set(Object value);
   }
 
+  /**
+   * TODO: document.
+   * 
+   * @param bean
+   * @param ctx a Context
+   */
   public void endVisit(AutoBean<?> bean, Context ctx) {
   }
 
+  /**
+   * TODO: document.
+   * 
+   * @param propertyName
+   * @param value
+   * @param ctx a PropertyContext
+   */
   public void endVisitReferenceProperty(String propertyName, AutoBean<?> value,
       PropertyContext ctx) {
   }
 
+  /**
+   * TODO: document.
+   * 
+   * @param propertyName
+   * @param value
+   * @param ctx a PropertyContext
+   */
   public void endVisitValueProperty(String propertyName, Object value,
       PropertyContext ctx) {
   }
 
+  /**
+   * TODO: document.
+   * 
+   * @param bean
+   * @param ctx a Context
+   */
   public boolean visit(AutoBean<?> bean, Context ctx) {
     return true;
   }
@@ -66,12 +92,23 @@
   /**
    * Called every time, but {@link #visit(AutoBean, Context)} will be called for
    * the value only the first time it is encountered.
+   * 
+   * @param propertyName
+   * @param value
+   * @param ctx a PropertyContext
    */
   public boolean visitReferenceProperty(String propertyName, AutoBean<?> value,
       PropertyContext ctx) {
     return true;
   }
 
+  /**
+   * TODO: document.
+   * 
+   * @param propertyName
+   * @param value
+   * @param ctx a PropertyContext
+   */
   public boolean visitValueProperty(String propertyName, Object value,
       PropertyContext ctx) {
     return true;
diff --git a/user/src/com/google/gwt/editor/client/EditorError.java b/user/src/com/google/gwt/editor/client/EditorError.java
index 51b464a..1a9c0f3 100644
--- a/user/src/com/google/gwt/editor/client/EditorError.java
+++ b/user/src/com/google/gwt/editor/client/EditorError.java
@@ -18,7 +18,7 @@
 /**
  * Allows invalid Editor state to be propagated through an Editor hierarchy.
  * Instances of EditorError are typically created as a side effect of calling
- * {@link EditorDelegate#recordError()}.
+ * {@link EditorDelegate#recordError}.
  * 
  * @see com.google.gwt.editor.client.testing.MockEditorError
  */
@@ -47,7 +47,7 @@
   String getPath();
 
   /**
-   * Returns the object passed into {@link EditorDelegate#recordError()}.
+   * Returns the object passed into {@link EditorDelegate#recordError}.
    */
   Object getUserData();
 
diff --git a/user/src/com/google/gwt/editor/client/impl/AbstractAutoBean.java b/user/src/com/google/gwt/editor/client/impl/AbstractAutoBean.java
index 9361cc5..a043a8c 100644
--- a/user/src/com/google/gwt/editor/client/impl/AbstractAutoBean.java
+++ b/user/src/com/google/gwt/editor/client/impl/AbstractAutoBean.java
@@ -163,6 +163,10 @@
 
   /**
    * No-op. Used as a debugger hook point for generated code.
+   * 
+   * @param method the method name
+   * @param returned the returned object
+   * @param parameters the parameter list
    */
   protected void call(String method, Object returned, Object... parameters) {
   }
@@ -185,6 +189,9 @@
 
   /**
    * No-op. Used as a debugger hook point for generated code.
+   * 
+   * @param method the method name
+   * @param toReturn the value to return
    */
   protected <V> V get(String method, V toReturn) {
     return toReturn;
@@ -205,6 +212,9 @@
 
   /**
    * No-op. Used as a debugger hook point for generated code.
+   * 
+   * @param method the method name
+   * @param value the Object value to be set
    */
   protected void set(String method, Object value) {
   }
diff --git a/user/src/com/google/gwt/editor/client/testing/MockEditorChain.java b/user/src/com/google/gwt/editor/client/testing/MockEditorChain.java
index ee5c0dc..c4d1b39 100644
--- a/user/src/com/google/gwt/editor/client/testing/MockEditorChain.java
+++ b/user/src/com/google/gwt/editor/client/testing/MockEditorChain.java
@@ -21,7 +21,9 @@
 import java.util.Map;
 
 /**
- * A Mock implementation of {@link CompositeEditor.EditorChain}.
+ * A Mock implementation of
+ * {@link com.google.gwt.editor.client.CompositeEditor.EditorChain
+ * CompositeEditor.EditorChain}.
  * 
  * @param <C> the type being edited
  */
diff --git a/user/src/com/google/gwt/editor/rebind/model/EditorData.java b/user/src/com/google/gwt/editor/rebind/model/EditorData.java
index 5d17f36..29dcb44 100644
--- a/user/src/com/google/gwt/editor/rebind/model/EditorData.java
+++ b/user/src/com/google/gwt/editor/rebind/model/EditorData.java
@@ -25,7 +25,6 @@
 import com.google.gwt.editor.client.LeafValueEditor;
 import com.google.gwt.editor.client.ValueAwareEditor;
 
-
 /**
  * Describes how an Editor is related to bean properties. This type contains
  * answers to questions asked by the generator code.
diff --git a/user/src/com/google/gwt/event/logical/shared/AttachEvent.java b/user/src/com/google/gwt/event/logical/shared/AttachEvent.java
index af13e8b..2c1ef1b 100644
--- a/user/src/com/google/gwt/event/logical/shared/AttachEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/AttachEvent.java
@@ -69,11 +69,10 @@
   /**
    * Construct a new {@link AttachEvent}.
    *
-   * @param width the new width
-   * @param height the new height
+   * @param attached true if the source has been attached 
    */
-  protected AttachEvent(boolean loaded) {
-    this.attached = loaded;
+  protected AttachEvent(boolean attached) {
+    this.attached = attached;
   }
 
   @Override
diff --git a/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java b/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java
index 3fe1144..4d0c6d4 100644
--- a/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/BeforeSelectionEvent.java
@@ -20,10 +20,10 @@
 /**
  * Represents a before selection event.
  * 
- * @param <I> the type about to be selected
+ * @param <T> the type about to be selected
  */
-public class BeforeSelectionEvent<I> extends
-    GwtEvent<BeforeSelectionHandler<I>> {
+public class BeforeSelectionEvent<T> extends
+    GwtEvent<BeforeSelectionHandler<T>> {
 
   /**
    * Handler type.
@@ -34,17 +34,17 @@
    * Fires a before selection event on all registered handlers in the handler
    * manager. If no such handlers exist, this method will do nothing.
    * 
-   * @param <I> the item type
+   * @param <T> the item type
    * @param source the source of the handlers
    * @param item the item
    * @return the event so that the caller can check if it was canceled, or null
    *         if no handlers of this event type have been registered
    */
-  public static <I> BeforeSelectionEvent<I> fire(
-      HasBeforeSelectionHandlers<I> source, I item) {
+  public static <T> BeforeSelectionEvent<T> fire(
+      HasBeforeSelectionHandlers<T> source, T item) {
     // If no handlers exist, then type can be null.
     if (TYPE != null) {
-      BeforeSelectionEvent<I> event = new BeforeSelectionEvent<I>();
+      BeforeSelectionEvent<T> event = new BeforeSelectionEvent<T>();
       event.setItem(item);
       source.fireEvent(event);
       return event;
@@ -64,7 +64,7 @@
     return TYPE;
   }
 
-  private I item;
+  private T item;
 
   private boolean canceled;
 
@@ -87,7 +87,7 @@
   // field itself does not, so we have to do an unsafe cast here.
   @SuppressWarnings("unchecked")
   @Override
-  public final Type<BeforeSelectionHandler<I>> getAssociatedType() {
+  public final Type<BeforeSelectionHandler<T>> getAssociatedType() {
     return (Type) TYPE;
   }
 
@@ -96,7 +96,7 @@
    * 
    * @return the item
    */
-  public I getItem() {
+  public T getItem() {
     return item;
   }
 
@@ -110,7 +110,7 @@
   }
 
   @Override
-  protected void dispatch(BeforeSelectionHandler<I> handler) {
+  protected void dispatch(BeforeSelectionHandler<T> handler) {
     handler.onBeforeSelection(this);
   }
 
@@ -119,7 +119,7 @@
    * 
    * @param item the item
    */
-  protected final void setItem(I item) {
+  protected final void setItem(T item) {
     this.item = item;
   }
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/BeforeSelectionHandler.java b/user/src/com/google/gwt/event/logical/shared/BeforeSelectionHandler.java
index 8671139..9ccb0a3 100644
--- a/user/src/com/google/gwt/event/logical/shared/BeforeSelectionHandler.java
+++ b/user/src/com/google/gwt/event/logical/shared/BeforeSelectionHandler.java
@@ -20,14 +20,14 @@
 /**
  * Handler interface for {@link BeforeSelectionEvent} events.
  * 
- * @param <I> the type about to be selected
+ * @param <T> the type about to be selected
  */
-public interface BeforeSelectionHandler<I> extends EventHandler {
+public interface BeforeSelectionHandler<T> extends EventHandler {
 
   /**
    * Called when {@link BeforeSelectionEvent} is fired.
    * 
    * @param event the {@link BeforeSelectionEvent} that was fired
    */
-  void onBeforeSelection(BeforeSelectionEvent<I> event);
+  void onBeforeSelection(BeforeSelectionEvent<T> event);
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/HasBeforeSelectionHandlers.java b/user/src/com/google/gwt/event/logical/shared/HasBeforeSelectionHandlers.java
index f88119d..41d6d88 100644
--- a/user/src/com/google/gwt/event/logical/shared/HasBeforeSelectionHandlers.java
+++ b/user/src/com/google/gwt/event/logical/shared/HasBeforeSelectionHandlers.java
@@ -22,9 +22,9 @@
  * A widget that implements this interface is a public source of
  * {@link BeforeSelectionEvent} events.
  * 
- * @param <I> the type about to be selected
+ * @param <T> the type about to be selected
  */
-public interface HasBeforeSelectionHandlers<I> extends HasHandlers {
+public interface HasBeforeSelectionHandlers<T> extends HasHandlers {
   /**
    * Adds a {@link BeforeSelectionEvent} handler.
    * 
@@ -32,5 +32,5 @@
    * @return the registration for the event
    */
   HandlerRegistration addBeforeSelectionHandler(
-      BeforeSelectionHandler<I> handler);
+      BeforeSelectionHandler<T> handler);
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/HasSelectionHandlers.java b/user/src/com/google/gwt/event/logical/shared/HasSelectionHandlers.java
index e3404da..cd3fa56 100644
--- a/user/src/com/google/gwt/event/logical/shared/HasSelectionHandlers.java
+++ b/user/src/com/google/gwt/event/logical/shared/HasSelectionHandlers.java
@@ -22,14 +22,14 @@
  * A widget that implements this interface is a public source of
  * {@link SelectionEvent} events.
  * 
- * @param <I> the type being selected
+ * @param <T> the type being selected
  */
-public interface HasSelectionHandlers<I> extends HasHandlers {
+public interface HasSelectionHandlers<T> extends HasHandlers {
   /**
    * Adds a {@link SelectionEvent} handler.
    * 
    * @param handler the handler
    * @return the registration for the event
    */
-  HandlerRegistration addSelectionHandler(SelectionHandler<I> handler);
+  HandlerRegistration addSelectionHandler(SelectionHandler<T> handler);
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/HasValueChangeHandlers.java b/user/src/com/google/gwt/event/logical/shared/HasValueChangeHandlers.java
index 187a1d2..5742d65 100644
--- a/user/src/com/google/gwt/event/logical/shared/HasValueChangeHandlers.java
+++ b/user/src/com/google/gwt/event/logical/shared/HasValueChangeHandlers.java
@@ -22,14 +22,14 @@
  * A widget that implements this interface is a public source of
  * {@link ValueChangeEvent} events.
  * 
- * @param <I> the value about to be changed
+ * @param <T> the value about to be changed
  */
-public interface HasValueChangeHandlers<I> extends HasHandlers {
+public interface HasValueChangeHandlers<T> extends HasHandlers {
   /**
    * Adds a {@link ValueChangeEvent} handler.
    * 
    * @param handler the handler
    * @return the registration for the event
    */
-  HandlerRegistration addValueChangeHandler(ValueChangeHandler<I> handler);
+  HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler);
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java b/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java
index abe083d..d10b29d 100644
--- a/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/SelectionEvent.java
@@ -20,9 +20,9 @@
 /**
  * Represents a selection event.
  * 
- * @param <I> the type being selected
+ * @param <T> the type being selected
  */
-public class SelectionEvent<I> extends GwtEvent<SelectionHandler<I>> {
+public class SelectionEvent<T> extends GwtEvent<SelectionHandler<T>> {
 
   /**
    * Handler type.
@@ -33,13 +33,13 @@
    * Fires a selection event on all registered handlers in the handler
    * manager.If no such handlers exist, this method will do nothing.
    * 
-   * @param <I> the selected item type
+   * @param <T> the selected item type
    * @param source the source of the handlers
    * @param selectedItem the selected item
    */
-  public static <I> void fire(HasSelectionHandlers<I> source, I selectedItem) {
+  public static <T> void fire(HasSelectionHandlers<T> source, T selectedItem) {
     if (TYPE != null) {
-      SelectionEvent<I> event = new SelectionEvent<I>(selectedItem);
+      SelectionEvent<T> event = new SelectionEvent<T>(selectedItem);
       source.fireEvent(event);
     }
   }
@@ -56,14 +56,14 @@
     return TYPE;
   }
 
-  private final I selectedItem;
+  private final T selectedItem;
 
   /**
    * Creates a new selection event.
    * 
    * @param selectedItem selected item
    */
-  protected SelectionEvent(I selectedItem) {
+  protected SelectionEvent(T selectedItem) {
     this.selectedItem = selectedItem;
   }
 
@@ -71,7 +71,7 @@
   // field itself does not, so we have to do an unsafe cast here.
   @SuppressWarnings("unchecked")
   @Override
-  public final Type<SelectionHandler<I>> getAssociatedType() {
+  public final Type<SelectionHandler<T>> getAssociatedType() {
     return (Type) TYPE;
   }
 
@@ -80,12 +80,12 @@
    * 
    * @return the selected item
    */
-  public I getSelectedItem() {
+  public T getSelectedItem() {
     return selectedItem;
   }
 
   @Override
-  protected void dispatch(SelectionHandler<I> handler) {
+  protected void dispatch(SelectionHandler<T> handler) {
     handler.onSelection(this);
   }
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/SelectionHandler.java b/user/src/com/google/gwt/event/logical/shared/SelectionHandler.java
index f9f2e07..1370092 100644
--- a/user/src/com/google/gwt/event/logical/shared/SelectionHandler.java
+++ b/user/src/com/google/gwt/event/logical/shared/SelectionHandler.java
@@ -20,14 +20,14 @@
 /**
  * Handler interface for {@link SelectionEvent} events.
  * 
- * @param <I> the type being selected
+ * @param <T> the type being selected
  */
-public interface SelectionHandler<I> extends EventHandler {
+public interface SelectionHandler<T> extends EventHandler {
 
   /**
    * Called when {@link SelectionEvent} is fired.
    * 
    * @param event the {@link SelectionEvent} that was fired
    */
-  void onSelection(SelectionEvent<I> event);
+  void onSelection(SelectionEvent<T> event);
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java b/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java
index bf71cf2..551063d 100644
--- a/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java
+++ b/user/src/com/google/gwt/event/logical/shared/ValueChangeEvent.java
@@ -20,9 +20,9 @@
 /**
  * Represents a value change event.
  * 
- * @param <I> the value about to be changed
+ * @param <T> the value about to be changed
  */
-public class ValueChangeEvent<I> extends GwtEvent<ValueChangeHandler<I>> {
+public class ValueChangeEvent<T> extends GwtEvent<ValueChangeHandler<T>> {
 
   /**
    * Handler type.
@@ -37,9 +37,9 @@
    * @param source the source of the handlers
    * @param value the value
    */
-  public static <I> void fire(HasValueChangeHandlers<I> source, I value) {
+  public static <T> void fire(HasValueChangeHandlers<T> source, T value) {
     if (TYPE != null) {
-      ValueChangeEvent<I> event = new ValueChangeEvent<I>(value);
+      ValueChangeEvent<T> event = new ValueChangeEvent<T>(value);
       source.fireEvent(event);
     }
   }
@@ -49,15 +49,15 @@
    * Use this call rather than making the decision to short circuit yourself for
    * safe handling of null.
    * 
-   * @param <I> the old value type
+   * @param <T> the old value type
    * @param source the source of the handlers
    * @param oldValue the oldValue, may be null
    * @param newValue the newValue, may be null
    */
-  public static <I> void fireIfNotEqual(HasValueChangeHandlers<I> source,
-      I oldValue, I newValue) {
+  public static <T> void fireIfNotEqual(HasValueChangeHandlers<T> source,
+      T oldValue, T newValue) {
     if (shouldFire(source, oldValue, newValue)) {
-      ValueChangeEvent<I> event = new ValueChangeEvent<I>(newValue);
+      ValueChangeEvent<T> event = new ValueChangeEvent<T>(newValue);
       source.fireEvent(event);
     }
   }
@@ -78,26 +78,26 @@
    * Convenience method to allow subtypes to know when they should fire a value
    * change event in a null-safe manner.
    * 
-   * @param <I> value type
+   * @param <T> value type
    * @param source the source
    * @param oldValue the old value
    * @param newValue the new value
    * @return whether the event should be fired
    */
-  protected static <I> boolean shouldFire(HasValueChangeHandlers<I> source,
-      I oldValue, I newValue) {
+  protected static <T> boolean shouldFire(HasValueChangeHandlers<T> source,
+      T oldValue, T newValue) {
     return TYPE != null && oldValue != newValue
         && (oldValue == null || !oldValue.equals(newValue));
   }
 
-  private final I value;
+  private final T value;
 
   /**
    * Creates a value change event.
    * 
    * @param value the value
    */
-  protected ValueChangeEvent(I value) {
+  protected ValueChangeEvent(T value) {
     this.value = value;
   }
 
@@ -105,7 +105,7 @@
   // field itself does not, so we have to do an unsafe cast here.
   @SuppressWarnings({"unchecked", "rawtypes"})
   @Override
-  public final Type<ValueChangeHandler<I>> getAssociatedType() {
+  public final Type<ValueChangeHandler<T>> getAssociatedType() {
     return (Type) TYPE;
   }
 
@@ -114,7 +114,7 @@
    * 
    * @return the value
    */
-  public I getValue() {
+  public T getValue() {
     return value;
   }
  
@@ -124,7 +124,7 @@
   }
 
   @Override
-  protected void dispatch(ValueChangeHandler<I> handler) {
+  protected void dispatch(ValueChangeHandler<T> handler) {
     handler.onValueChange(this);
   }
 }
diff --git a/user/src/com/google/gwt/event/logical/shared/ValueChangeHandler.java b/user/src/com/google/gwt/event/logical/shared/ValueChangeHandler.java
index 9fb4772..0d38342 100644
--- a/user/src/com/google/gwt/event/logical/shared/ValueChangeHandler.java
+++ b/user/src/com/google/gwt/event/logical/shared/ValueChangeHandler.java
@@ -20,14 +20,14 @@
 /**
  * Handler interface for {@link ValueChangeEvent} events.
  * 
- * @param <I> the value about to be changed
+ * @param <T> the value about to be changed
  */
-public interface ValueChangeHandler<I> extends EventHandler {
+public interface ValueChangeHandler<T> extends EventHandler {
 
   /**
    * Called when {@link ValueChangeEvent} is fired.
    * 
    * @param event the {@link ValueChangeEvent} that was fired
    */
-  void onValueChange(ValueChangeEvent<I> event);
+  void onValueChange(ValueChangeEvent<T> event);
 }
diff --git a/user/src/com/google/gwt/event/shared/DefaultHandlerRegistration.java b/user/src/com/google/gwt/event/shared/DefaultHandlerRegistration.java
index e19b557..0cc9070 100644
--- a/user/src/com/google/gwt/event/shared/DefaultHandlerRegistration.java
+++ b/user/src/com/google/gwt/event/shared/DefaultHandlerRegistration.java
@@ -25,7 +25,6 @@
 @Deprecated
 public class DefaultHandlerRegistration implements HandlerRegistration {
 
-  @SuppressWarnings("deprecation")
   private final HandlerManager manager;
   private final EventHandler handler;
   private final Type<?> type;
@@ -40,7 +39,7 @@
    * @param handler the handler
    */
   protected <H extends EventHandler> DefaultHandlerRegistration(
-      @SuppressWarnings("deprecation") HandlerManager manager, Type<H> type,
+      HandlerManager manager, Type<H> type,
       H handler) {
     this.manager = manager;
     this.handler = handler;
@@ -50,7 +49,7 @@
   /**
    * Removes the given handler from its manager.
    */
-  @SuppressWarnings({"unchecked", "deprecation"})
+  @SuppressWarnings({"unchecked"})
   // This is safe because when the elements were passed in they conformed to
   // Type<H>,H.
   public void removeHandler() {
diff --git a/user/src/com/google/gwt/event/shared/HandlerManager.java b/user/src/com/google/gwt/event/shared/HandlerManager.java
index 9a8776d..4621491 100644
--- a/user/src/com/google/gwt/event/shared/HandlerManager.java
+++ b/user/src/com/google/gwt/event/shared/HandlerManager.java
@@ -50,7 +50,6 @@
    * @param source the event source
    * @param fireInReverseOrder true to fire handlers in reverse order
    */
-  @SuppressWarnings("deprecation")
   public HandlerManager(Object source, boolean fireInReverseOrder) {
     eventBus = new SimpleEventBus(fireInReverseOrder);
     this.source = source;
@@ -115,7 +114,6 @@
    * @param type the handler's event type
    * @return the given handler
    */
-  @SuppressWarnings("deprecation")
   public <H extends EventHandler> H getHandler(GwtEvent.Type<H> type, int index) {
     return eventBus.getHandler(type, index);
   }
@@ -126,7 +124,6 @@
    * @param type the event type
    * @return the number of registered handlers
    */
-  @SuppressWarnings("deprecation")
   public int getHandlerCount(Type<?> type) {
     return eventBus.getHandlerCount(type);
   }
@@ -137,7 +134,6 @@
    * @param e the event type
    * @return whether the given event type is handled
    */
-  @SuppressWarnings("deprecation")
   public boolean isEventHandled(Type<?> e) {
     return eventBus.isEventHandled(e);
   }
diff --git a/user/src/com/google/gwt/i18n/client/CurrencyList.java b/user/src/com/google/gwt/i18n/client/CurrencyList.java
index 932dac7..0dbf144 100644
--- a/user/src/com/google/gwt/i18n/client/CurrencyList.java
+++ b/user/src/com/google/gwt/i18n/client/CurrencyList.java
@@ -106,7 +106,7 @@
 
   /**
    * Map of currency codes to localized currency names. This is kept separate
-   * from {@link #dataMap} above so that the names can be completely removed by
+   * from {@link #dataMapJava} above so that the names can be completely removed by
    * the compiler if they are not used.
    */
   protected HashMap<String, String> namesMapJava;
diff --git a/user/src/com/google/gwt/i18n/client/Messages.java b/user/src/com/google/gwt/i18n/client/Messages.java
index 6889ec7..7ddc537 100644
--- a/user/src/com/google/gwt/i18n/client/Messages.java
+++ b/user/src/com/google/gwt/i18n/client/Messages.java
@@ -206,7 +206,6 @@
     String value();
   }
 
-
   /**
    * Ignored except on parameters also tagged with {@link PluralCount}, and
    * provides an offset to be subtracted from the value before a plural rule
diff --git a/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java b/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java
index caf50fa..92ec8ab 100644
--- a/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java
+++ b/user/src/com/google/gwt/i18n/client/impl/CurrencyDataImpl.java
@@ -92,30 +92,37 @@
     this.portableCurrencySymbol = portableCurrencySymbol;
   }
 
+  @Override
   public int getDefaultFractionDigits() {
     return getDefaultFractionDigits(flagsAndPrecision);
   }
 
+  @Override
   public String getPortableCurrencySymbol() {
     return portableCurrencySymbol;
   }
 
+  @Override
   public boolean isDeprecated() {
     return isDeprecated(flagsAndPrecision);
   }
 
+  @Override
   public boolean isSpaceForced() {
     return isSpaceForced(flagsAndPrecision);
   }
 
+  @Override
   public boolean isSpacingFixed() {
     return isSpacingFixed(flagsAndPrecision);
   }
 
+  @Override
   public boolean isSymbolPositionFixed() {
     return isSymbolPositionFixed(flagsAndPrecision);
   }
 
+  @Override
   public boolean isSymbolPrefix() {
     return isSymbolPrefix(flagsAndPrecision);
   }
diff --git a/user/src/com/google/gwt/layout/client/Layout.java b/user/src/com/google/gwt/layout/client/Layout.java
index 2bd46bf..f1f214a 100644
--- a/user/src/com/google/gwt/layout/client/Layout.java
+++ b/user/src/com/google/gwt/layout/client/Layout.java
@@ -128,12 +128,12 @@
    * system will be over- or under-contrained. For this reason, the following
    * methods are provided for setting these values:
    * <ul>
-   * <li>{@link #setLeftRight(double, Unit, double, Unit)}</li>
-   * <li>{@link #setLeftWidth(double, Unit, double, Unit)}</li>
-   * <li>{@link #setRightWidth(double, Unit, double, Unit)}</li>
-   * <li>{@link #setTopBottom(double, Unit, double, Unit)}</li>
-   * <li>{@link #setTopHeight(double, Unit, double, Unit)}</li>
-   * <li>{@link #setBottomHeight(double, Unit, double, Unit)}</li>
+   * <li>{@link Layout.Layer#setLeftRight}</li>
+   * <li>{@link Layout.Layer#setLeftWidth}</li>
+   * <li>{@link Layout.Layer#setRightWidth}</li>
+   * <li>{@link Layout.Layer#setTopBottom}</li>
+   * <li>{@link Layout.Layer#setTopHeight}</li>
+   * <li>{@link Layout.Layer#setBottomHeight}</li>
    * </ul>
    * </p>
    * 
diff --git a/user/src/com/google/gwt/layout/client/LayoutImplIE8.java b/user/src/com/google/gwt/layout/client/LayoutImplIE8.java
index 63d487b..ecfd916 100644
--- a/user/src/com/google/gwt/layout/client/LayoutImplIE8.java
+++ b/user/src/com/google/gwt/layout/client/LayoutImplIE8.java
@@ -24,7 +24,7 @@
 import com.google.gwt.layout.client.Layout.Layer;
 
 /**
- * This implementation is used on IE8. Unlike {@link LayoutImpl}, it converts
+ * This implementation is used on IE8. Unlike {@code LayoutImpl}, it converts
  * all values to pixels before setting them. This is necessary because this
  * browser incorrectly calculates the relative sizes and positions of CSS
  * properties specified in certain units (e.g., when the value of an 'em' is
diff --git a/user/src/com/google/gwt/logging/client/HtmlLogFormatter.java b/user/src/com/google/gwt/logging/client/HtmlLogFormatter.java
index 62f222f..ad1dd73 100644
--- a/user/src/com/google/gwt/logging/client/HtmlLogFormatter.java
+++ b/user/src/com/google/gwt/logging/client/HtmlLogFormatter.java
@@ -18,7 +18,6 @@
 
 import com.google.gwt.logging.impl.FormatterImpl;
 
-import java.util.Date;
 import java.util.logging.Level;
 import java.util.logging.LogRecord;
 
@@ -51,7 +50,6 @@
   }
   
   protected String getHtmlPrefix(LogRecord event) {
-    Date date = new Date(event.getMillis());
     StringBuilder prefix = new StringBuilder();
     prefix.append("<span style='color:");
     prefix.append(getColor(event.getLevel().intValue()));
@@ -60,6 +58,9 @@
     return prefix.toString();
   }
   
+  /**
+   * @param event
+   */
   protected String getHtmlSuffix(LogRecord event) {
     return "</code></span>";
   }
diff --git a/user/src/com/google/gwt/logging/impl/FormatterImpl.java b/user/src/com/google/gwt/logging/impl/FormatterImpl.java
index 051f6f7..df9b153 100644
--- a/user/src/com/google/gwt/logging/impl/FormatterImpl.java
+++ b/user/src/com/google/gwt/logging/impl/FormatterImpl.java
@@ -22,7 +22,7 @@
 import java.util.logging.LogRecord;
 
 /**
- * Base class for Formatters - provides common functionality
+ * Base class for Formatters - provides common functionality.
  */
 public abstract class FormatterImpl extends Formatter {
 
diff --git a/user/src/com/google/gwt/logging/server/JsonLogRecordServerUtil.java b/user/src/com/google/gwt/logging/server/JsonLogRecordServerUtil.java
index e32590d..b8f7dfd 100644
--- a/user/src/com/google/gwt/logging/server/JsonLogRecordServerUtil.java
+++ b/user/src/com/google/gwt/logging/server/JsonLogRecordServerUtil.java
@@ -24,7 +24,6 @@
 import java.util.logging.LogRecord;
 import java.util.logging.Logger;
 
-
 /**
  * A set of functions to convert standard JSON strings into
  * LogRecords. The corresponding functions to create the JSON
@@ -51,7 +50,7 @@
     lr.setMillis(timestamp);
     return lr;
   }
-  
+
   private static StackTraceElement stackTraceElementFromJson(
       String jsonString) throws JSONException {
     JSONObject ste = new JSONObject(jsonString);
@@ -61,7 +60,7 @@
     int lineNumber = Integer.parseInt(ste.getString("lineNumber"));
     return new StackTraceElement(className, methodName, fileName, lineNumber);
   }
-  
+
   private static Throwable throwableFromJson(String jsonString)
   throws JSONException {
     if (jsonString.equals("{}")) {
diff --git a/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java b/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
index d096885..d3c1904 100644
--- a/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
+++ b/user/src/com/google/gwt/logging/server/RemoteLoggingServiceUtil.java
@@ -20,24 +20,26 @@
 import java.util.logging.Logger;
 
 /**
- * Utilities for classes that accept Remote Logging requests
+ * Utilities for classes that accept Remote Logging requests.
  */
 public class RemoteLoggingServiceUtil {
+
   /**
-   * Exceptions that occur during remote logging
+   * Exceptions that occur during remote logging.
    */
-  public static class RemoteLoggingException extends Exception { 
+  public static class RemoteLoggingException extends Exception {
     public RemoteLoggingException(String message) {
       super(message);
     }
-    
+
     public RemoteLoggingException(String message, Throwable t) {
       super(message, t);
     }
   }
 
   /**
-   * Logs a message on the server
+   * Logs a message on the server.
+   *
    * @param lr LogRecord to be logged
    * @param strongName Permutation name (used for deobfuscation and may be null,
    *        which will only cause deobfuscation to fail)
@@ -46,11 +48,9 @@
    * @param loggerNameOverride logger name for messages logged on server. May be
    *        null, in which case, messages will be logged to a logger
    *        corresponding to the client side logger which triggered them.
-   * 
-   * @return Empty string when successful, or an error string in case of failure.
    */
   public static void logOnServer(LogRecord lr, String strongName,
-      StackTraceDeobfuscator deobfuscator, String loggerNameOverride) throws 
+      StackTraceDeobfuscator deobfuscator, String loggerNameOverride) throws
       RemoteLoggingException {
     if (deobfuscator != null) {
       lr = deobfuscator.deobfuscateLogRecord(lr, strongName);
@@ -60,7 +60,7 @@
     Logger logger = Logger.getLogger(loggerName);
     logger.log(lr);
   }
-  
+
   public static void logOnServer(String serializedLogRecordJson,
       String strongName, StackTraceDeobfuscator deobfuscator,
       String loggerNameOverride) throws RemoteLoggingException {
diff --git a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
index df05c97..40787fd 100644
--- a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
+++ b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
@@ -82,12 +82,15 @@
     return newSt;
   }
   
-  private Throwable deobfuscateThrowable(Throwable t, String strongName) {
-    if (t.getStackTrace() != null) {
-      t.setStackTrace(deobfuscateStackTrace(t.getStackTrace(), strongName));
+  private Throwable deobfuscateThrowable(Throwable old, String strongName) {
+    Throwable t = new Throwable(old.getMessage());
+    if (old.getStackTrace() != null) {
+      t.setStackTrace(deobfuscateStackTrace(old.getStackTrace(), strongName));
+    } else {
+      t.setStackTrace(new StackTraceElement[0]);
     }
-    if (t.getCause() != null) {
-      t.initCause(deobfuscateThrowable(t.getCause(), strongName));
+    if (old.getCause() != null) {
+      t.initCause(deobfuscateThrowable(old.getCause(), strongName));
     }
     return t;
   }
diff --git a/user/src/com/google/gwt/requestfactory/client/DefaultRequestTransport.java b/user/src/com/google/gwt/requestfactory/client/DefaultRequestTransport.java
index 75cc541..93fac74 100644
--- a/user/src/com/google/gwt/requestfactory/client/DefaultRequestTransport.java
+++ b/user/src/com/google/gwt/requestfactory/client/DefaultRequestTransport.java
@@ -61,7 +61,9 @@
   /**
    * Construct a DefaultRequestTransport.
    * 
-   * @param eventBus the same EventBus passed into {@link RequestFactory#init}.
+   * @param eventBus the same EventBus passed into
+   *          {@link RequestFactory#initialize(EventBus)
+   *          RequestFactory.initialize}.
    */
   public DefaultRequestTransport(EventBus eventBus) {
     if (eventBus == null) {
@@ -120,7 +122,8 @@
 
   /**
    * Creates a RequestCallback that maps the HTTP response onto the
-   * {@link TransportReceiver} interface.
+   * {@link com.google.gwt.requestfactory.shared.RequestTransport.TransportReceiver
+   * TransportReceiver} interface.
    */
   protected RequestCallback createRequestCallback(
       final TransportReceiver receiver) {
diff --git a/user/src/com/google/gwt/requestfactory/client/RequestFactoryEditorDriver.java b/user/src/com/google/gwt/requestfactory/client/RequestFactoryEditorDriver.java
index 78341d8..a98e6eb 100644
--- a/user/src/com/google/gwt/requestfactory/client/RequestFactoryEditorDriver.java
+++ b/user/src/com/google/gwt/requestfactory/client/RequestFactoryEditorDriver.java
@@ -36,16 +36,17 @@
  * instance.initialize(.....);
  * myRequest.with(instance.getPaths());
  * 
- * // Fire the request, in the callback 
+ * // Fire the request, in the callback
  * instance.edit(retrievedRecord);
  * // Control when the request is sent
  * instance.flush().fire(new Receiver {...});
  * }
  * </pre>
+ *
+ * <p> See {@code com.google.gwt.requestfactory.client.testing.MockRequestFactoryEditorDriver}
  * 
  * @param <P> the type of Proxy being edited
  * @param <E> the type of Editor that will edit the Record
- * @see com.google.gwt.requestfactory.client.testing.MockRequestFactoryEditorDriver
  */
 public interface RequestFactoryEditorDriver<P, E extends Editor<? super P>> {
   /**
@@ -57,7 +58,7 @@
   /**
    * Start driving the Editor and its sub-editors with data. A
    * {@link RequestContext} is required to provide context for the changes to
-   * the proxy (see {@link RequestContext#edit()}. Note that this driver will
+   * the proxy (see {@link RequestContext#edit}. Note that this driver will
    * not fire the request.
    * 
    * @param proxy the proxy to be edited
@@ -97,7 +98,7 @@
    * {@link EventBus} to be monitored for subscription services.
    * 
    * @see com.google.gwt.editor.client.EditorDelegate#subscribe
-   * @see {@link com.google.gwt.event.shared.ResettableEventBus}
+   * @see com.google.gwt.event.shared.ResettableEventBus
    */
   void initialize(EventBus eventBus, RequestFactory requestFactory, E editor);
 
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequestFactory.java b/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequestFactory.java
index f1787a5..bcd026c 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequestFactory.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/AbstractRequestFactory.java
@@ -110,6 +110,7 @@
         requestContext.addInvocation(this);
       }
 
+      @Override
       protected void handleResult(Object result) {
         succeed(decodeReturnObject(proxyId.getProxyClass(), result));
       }
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/FindRequest.java b/user/src/com/google/gwt/requestfactory/client/impl/FindRequest.java
index d29a77d..7bbee53 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/FindRequest.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/FindRequest.java
@@ -30,5 +30,5 @@
   /**
    * Use the implicit lookup in passing EntityProxy types to service methods.
    */
-  Request<EntityProxy> find(EntityProxyId proxy);
+  Request<EntityProxy> find(EntityProxyId<?> proxy);
 }
\ No newline at end of file
diff --git a/user/src/com/google/gwt/requestfactory/client/impl/SimpleEntityProxyId.java b/user/src/com/google/gwt/requestfactory/client/impl/SimpleEntityProxyId.java
index 91d21a8..fd24028 100644
--- a/user/src/com/google/gwt/requestfactory/client/impl/SimpleEntityProxyId.java
+++ b/user/src/com/google/gwt/requestfactory/client/impl/SimpleEntityProxyId.java
@@ -75,6 +75,7 @@
     hashCode = clientId;
   }
 
+  @Override
   public boolean equals(Object o) {
     if (this == o) {
       return true;
@@ -113,6 +114,7 @@
     return serverId;
   }
 
+  @Override
   public int hashCode() {
     return hashCode;
   }
diff --git a/user/src/com/google/gwt/requestfactory/server/DeadEntityException.java b/user/src/com/google/gwt/requestfactory/server/DeadEntityException.java
new file mode 100644
index 0000000..008fe4c
--- /dev/null
+++ b/user/src/com/google/gwt/requestfactory/server/DeadEntityException.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2010 Google Inc.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.requestfactory.server;
+
+/**
+ * Indicates the user attempted to perform an operation on an irretrievable
+ * entity
+ */
+public class DeadEntityException extends RuntimeException {
+  public DeadEntityException() {
+  }
+
+  public DeadEntityException(String message) {
+    super(message);
+  }
+}
diff --git a/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java b/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java
index f59a87d..5257e62 100644
--- a/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java
+++ b/user/src/com/google/gwt/requestfactory/server/JsonRequestProcessor.java
@@ -237,6 +237,9 @@
       JSONObject exceptionResponse = buildExceptionResponse(e.getCause());
       throw new RequestProcessingException("Unexpected exception", e,
           exceptionResponse.toString());
+    } catch (DeadEntityException e) {
+      // This is a normal, if exceptional, condition
+      return buildExceptionResponse(e).toString();
     } catch (Exception e) {
       JSONObject exceptionResponse = buildExceptionResponse(e);
       throw new RequestProcessingException("Unexpected exception", e,
@@ -464,6 +467,10 @@
     Class<?> idType = getIdMethodForEntity(entityType).getReturnType();
     Object entityInstance = getEntityInstance(writeOperation, entityType,
         entityKey.decodedId(idType), idType);
+    if (entityInstance == null) {
+      throw new DeadEntityException(
+          "The requested entity is not available on the server");
+    }
     cachedEntityLookup.put(entityKey, entityInstance);
 
     Iterator<?> keys = recordObject.keys();
diff --git a/user/src/com/google/gwt/requestfactory/server/Logging.java b/user/src/com/google/gwt/requestfactory/server/Logging.java
index 2d6973b..d9d806f 100644
--- a/user/src/com/google/gwt/requestfactory/server/Logging.java
+++ b/user/src/com/google/gwt/requestfactory/server/Logging.java
@@ -23,13 +23,13 @@
 
 /**
  * Server side object that handles log messages sent by
- * {@link RequestFactoryLogHandler}.
+ * {@link com.google.gwt.requestfactory.client.RequestFactoryLogHandler}.
  */
 public class Logging {
 
   private static StackTraceDeobfuscator deobfuscator =
     new StackTraceDeobfuscator("");
-  
+
   public static void logMessage(String logRecordJson) throws
   RemoteLoggingException {
     // if the header does not exist, we pass null, which is handled gracefully
@@ -40,7 +40,7 @@
     RemoteLoggingServiceUtil.logOnServer(logRecordJson,
         strongName, deobfuscator, null);
   }
-  
+
   /**
    * This function is only for server side use which is why it's not in the
    * LoggingRequest interface.
@@ -48,15 +48,15 @@
   public static void setSymbolMapsDirectory(String dir) {
     deobfuscator.setSymbolMapsDirectory(dir);
   }
-  
+
   private String id = "";
-  
-  private Integer version = 0;  
-  
+
+  private Integer version = 0;
+
   public String getId() {
     return this.id;
   }
-  
+
   public Integer getVersion() {
     return this.version;
   }
@@ -64,9 +64,8 @@
   public void setId(String id) {
     this.id = id;
   }
-    
+
   public void setVersion(Integer version) {
     this.version = version;
   }
 }
-
diff --git a/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java b/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java
index dea5f7b..1162a9d 100644
--- a/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java
+++ b/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java
@@ -84,7 +84,6 @@
     postJsonFile(jsonObject);
   }
 
-  @SuppressWarnings("deprecation")
   private void postJsonFile(JSONObject contentData) throws IOException,
       JSONException {
     HttpPost post = new HttpPost(url);
diff --git a/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java b/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
index c3fc688..ec92a32 100644
--- a/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
+++ b/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
@@ -28,9 +28,9 @@
    * Returns the {@link EntityProxyId} that identifies a particular instance of
    * the type proxied by the receiver.
    * <p>
-   * An id returned by a proxy newly created by {@link RequestFactory#create}
-   * {@link #equals(Object)} those returned later by a proxies to the persisted
-   * object.
+   * An id returned by a proxy newly created by {@link RequestContext#create}
+   * {@link Object#equals(Object) equals} those returned later by proxies to the
+   * persisted object.
    * <p>
    * Subtypes should override to declare they return a stable id of their own
    * type, to allow type safe use of the request objects returned by
diff --git a/user/src/com/google/gwt/requestfactory/shared/RequestContext.java b/user/src/com/google/gwt/requestfactory/shared/RequestContext.java
index a7b88ba..78279e1 100644
--- a/user/src/com/google/gwt/requestfactory/shared/RequestContext.java
+++ b/user/src/com/google/gwt/requestfactory/shared/RequestContext.java
@@ -44,8 +44,7 @@
   void fire();
 
   /**
-   * For receiving errors or validation failures only. Request return values are
-   * received via {@link Request#receive}.
+   * For receiving errors or validation failures only.
    * 
    * @throws IllegalArgumentException if <code>receiver</code> is
    *           <code>null</code>
diff --git a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
index 943efdd..dce35e2 100644
--- a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
+++ b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
@@ -68,9 +68,9 @@
 
   /**
    * Return the class object which may be used to create new instances of the
-   * type of this token, via {@link #create}. The token may represent either a
-   * proxy instance (see {@link #getHistoryToken()}) or a proxy class (see
-   * {@link #getToken()}).
+   * type of this token, via {@link RequestContext#create}. The token may
+   * represent either a proxy instance (see {@link #getHistoryToken}) or a proxy
+   * class (see {@link #getProxyClass}).
    */
   Class<? extends EntityProxy> getProxyClass(String historyToken);
 
diff --git a/user/src/com/google/gwt/resources/css/ast/CssSprite.java b/user/src/com/google/gwt/resources/css/ast/CssSprite.java
index 685c56f..3210b79 100644
--- a/user/src/com/google/gwt/resources/css/ast/CssSprite.java
+++ b/user/src/com/google/gwt/resources/css/ast/CssSprite.java
@@ -27,7 +27,7 @@
 
 /**
  * Represents a sprited image. This is basically a normal CssRule, except for
- * one well-known property {@value CssSprite#IMAGE_PROPERTY_NAME}, which
+ * one well-known property {@value IMAGE_PROPERTY_NAME}, which
  * specifies the name of an ImageResource accessor.
  */
 public class CssSprite extends CssRule {
@@ -37,7 +37,7 @@
   /**
    * A facade for the underlying CssProperty list maintained by CssRule. We
    * override the add and set methods to intercept the
-   * {@value CssSprite#IMAGE_PROPERTY_NAME} property.
+   * {@value IMAGE_PROPERTY_NAME} property.
    */
   private class SpritePropertyList implements List<CssProperty> {
     private final List<CssProperty> source;
diff --git a/user/src/com/google/gwt/resources/css/ast/CssVisitor.java b/user/src/com/google/gwt/resources/css/ast/CssVisitor.java
index a8520fc..5e69566 100644
--- a/user/src/com/google/gwt/resources/css/ast/CssVisitor.java
+++ b/user/src/com/google/gwt/resources/css/ast/CssVisitor.java
@@ -164,7 +164,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssDef x, Context ctx) {
     return true;
@@ -173,7 +172,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssEval x, Context ctx) {
     return true;
@@ -182,7 +180,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssExternalSelectors x, Context ctx) {
     return true;
@@ -191,7 +188,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssIf x, Context ctx) {
     return true;
@@ -200,7 +196,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssMediaRule x, Context ctx) {
     return true;
@@ -209,7 +204,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssNoFlip x, Context ctx) {
     return true;
@@ -218,7 +212,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssPageRule x, Context ctx) {
     return true;
@@ -227,7 +220,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssProperty x, Context ctx) {
     return true;
@@ -236,7 +228,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssRule x, Context ctx) {
     return true;
@@ -245,7 +236,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssSelector x, Context ctx) {
     return true;
@@ -254,7 +244,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssSprite x, Context ctx) {
     return true;
@@ -263,7 +252,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssStylesheet x, Context ctx) {
     return true;
@@ -272,7 +260,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssUrl x, Context ctx) {
     return true;
@@ -281,7 +268,6 @@
   /**
    * @param x the node being visited
    * @param ctx the context for the visit
-   * @return
    */
   public boolean visit(CssUnknownAtRule x, Context ctx) {
     return true;
diff --git a/user/src/com/google/gwt/safehtml/client/SafeHtmlTemplates.java b/user/src/com/google/gwt/safehtml/client/SafeHtmlTemplates.java
index 858d0b1..7b969a9 100644
--- a/user/src/com/google/gwt/safehtml/client/SafeHtmlTemplates.java
+++ b/user/src/com/google/gwt/safehtml/client/SafeHtmlTemplates.java
@@ -28,7 +28,7 @@
  * <p>Example usage:
  * <pre>
  *   public interface MyTemplate extends SafeHtmlTemplates {
- *     @Template("<span class=\"{3}\">{0}: <a href=\"{1}\">{2}</a></span>")
+ *     &#064;Template("<span class=\"{3}\">{0}: <a href=\"{1}\">{2}</a></span>")
  *     SafeHtml messageWithLink(SafeHtml message, String url, String linkText,
  *       String style);
  *   }
diff --git a/user/src/com/google/gwt/safehtml/shared/SimpleHtmlSanitizer.java b/user/src/com/google/gwt/safehtml/shared/SimpleHtmlSanitizer.java
index 0e25278..101d032 100644
--- a/user/src/com/google/gwt/safehtml/shared/SimpleHtmlSanitizer.java
+++ b/user/src/com/google/gwt/safehtml/shared/SimpleHtmlSanitizer.java
@@ -29,7 +29,7 @@
  * in a whitelist (including {@code <b>, <em>, <i>}, etc; for the exact list
  * consult the source), as well as numeric HTML entities and HTML entity
  * references. Any HTML metacharacters that do not appear as part of markup in
- * this subset will be HTML-esacped.
+ * this subset will be HTML-escaped.
  */
 public final class SimpleHtmlSanitizer implements HtmlSanitizer {
 
diff --git a/user/src/com/google/gwt/text/shared/SimpleSafeHtmlRenderer.java b/user/src/com/google/gwt/text/shared/SimpleSafeHtmlRenderer.java
index 343e23b..5921022 100644
--- a/user/src/com/google/gwt/text/shared/SimpleSafeHtmlRenderer.java
+++ b/user/src/com/google/gwt/text/shared/SimpleSafeHtmlRenderer.java
@@ -21,7 +21,7 @@
 
 /**
  * A simple {@link SafeHtmlRenderer} implementation that calls
- * {@link SafeHtmlUtils#fromString(String)) to escape its arguments.
+ * {@link SafeHtmlUtils#fromString(String)} to escape its arguments.
  */
 public class SimpleSafeHtmlRenderer implements SafeHtmlRenderer<String> {
 
diff --git a/user/src/com/google/gwt/uibinder/attributeparsers/FieldReferenceConverter.java b/user/src/com/google/gwt/uibinder/attributeparsers/FieldReferenceConverter.java
index 6c0c4a2..85cbb45 100644
--- a/user/src/com/google/gwt/uibinder/attributeparsers/FieldReferenceConverter.java
+++ b/user/src/com/google/gwt/uibinder/attributeparsers/FieldReferenceConverter.java
@@ -24,7 +24,8 @@
 /**
  * Deals with field references, e.g. the bits in braces here: <code>&lt;div
  * class="{style.enabled} fancy {style.impressive}" /></code>, by converting
- * them to java expressions (with the help of a {@link #Delegate}).
+ * them to java expressions (with the help of a
+ * {@link FieldReferenceConverter.Delegate}).
  * <p>
  * A field reference is one or more segments separated by dots. The first
  * segment is considered to be a reference to a ui field, and succeeding
@@ -44,7 +45,8 @@
  */
 public class FieldReferenceConverter {
   /**
-   * May be thrown by the {@link #Delegate} for badly formatted input.
+   * May be thrown by the {@link FieldReferenceConverter.Delegate} for badly
+   * formatted input.
    */
   @SuppressWarnings("serial")
   public static class IllegalFieldReferenceException extends RuntimeException {
diff --git a/user/src/com/google/gwt/uibinder/client/UiChild.java b/user/src/com/google/gwt/uibinder/client/UiChild.java
index db992c6..3f11958 100644
--- a/user/src/com/google/gwt/uibinder/client/UiChild.java
+++ b/user/src/com/google/gwt/uibinder/client/UiChild.java
@@ -40,7 +40,7 @@
  * <p>
  * For example, <code>
  * 
- * @UiChild MyWidget#addCustomChild(Widget w) </code> and
+ * &#064;UiChild MyWidget#addCustomChild(Widget w) </code> and
  * 
  *          <pre>
  *          <p:MyWidget>
diff --git a/user/src/com/google/gwt/uibinder/client/UiHandler.java b/user/src/com/google/gwt/uibinder/client/UiHandler.java
index d793954..4fdfe5f 100644
--- a/user/src/com/google/gwt/uibinder/client/UiHandler.java
+++ b/user/src/com/google/gwt/uibinder/client/UiHandler.java
@@ -23,7 +23,7 @@
 
 /**
  * Marks a method to be automatically bound as an event handler. See examples
- * in {@link com.google.gwt.uibinder.test.client.HandlerDemo}.
+ * in {@code com.google.gwt.uibinder.test.client.HandlerDemo}.
  *
  * <p>The annotation values must be declared in the "ui:field"
  * template attribute.
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/AttributeMessageParser.java b/user/src/com/google/gwt/uibinder/elementparsers/AttributeMessageParser.java
index 265f010..7a70e73 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/AttributeMessageParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/AttributeMessageParser.java
@@ -24,7 +24,7 @@
  * This parser is not tied to a particular class of element, but rather is run
  * as the first parser in any parser stack. It looks for attribute values that
  * are set as calls to the template's generated Messages interface, by calling
- * {@link com.google.gwt.uibinder.rebind.messages.MessagesWriter.MessagesWriter#consumeAndStoreMessageAttributesFor
+ * {@link com.google.gwt.uibinder.rebind.messages.MessagesWriter#consumeAndStoreMessageAttributesFor(XMLElement)
  * MessagesWriter.consumeAndStoreMessageAttributesFor}
  */
 public class AttributeMessageParser implements ElementParser {
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/ImageParser.java b/user/src/com/google/gwt/uibinder/elementparsers/ImageParser.java
index 8c122ea..55d27fc 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/ImageParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/ImageParser.java
@@ -25,7 +25,8 @@
 
 /**
  * Custom parsing of Image widgets. Sets ImageResource via constructor, because
- * {@link Image#setResource} clobbers most setter values.
+ * {@link com.google.gwt.user.client.ui.Image#setResource Image.setResource}
+ * clobbers most setter values.
  */
 public class ImageParser implements ElementParser {
 
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/UiChildParser.java b/user/src/com/google/gwt/uibinder/elementparsers/UiChildParser.java
index 69e9ff5..0c20025 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/UiChildParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/UiChildParser.java
@@ -32,7 +32,8 @@
 import java.util.Map;
 
 /**
- * Parses any children of widgets that use the {@link UiChild} annotation.
+ * Parses any children of widgets that use the
+ * {@link com.google.gwt.uibinder.client.UiChild UIChild} annotation.
  */
 public class UiChildParser implements ElementParser {
 
diff --git a/user/src/com/google/gwt/user/cellview/client/CellTable.java b/user/src/com/google/gwt/user/cellview/client/CellTable.java
index 43208af..17fc161 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellTable.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellTable.java
@@ -52,7 +52,25 @@
 
 /**
  * A tabular view that supports paging and columns.
- *
+ * 
+ * <p>
+ * <h3>Columns</h3>
+ * The {@link Column} class defines the {@link Cell} used to render a column.
+ * Implement {@link Column#getValue(Object)} to retrieve the field value from
+ * the row object that will be rendered in the {@link Cell}.
+ * </p>
+ * 
+ * <p>
+ * <h3>Headers and Footers</h3>
+ * A {@link Header} can be placed at the top (header) or bottom (footer) of the
+ * {@link CellTable}. You can specify a header as text using
+ * {@link #addColumn(Column, String)}, or you can create a custom {@link Header}
+ * that can change with the value of the cells, such as a column total. The
+ * {@link Header} will be rendered every time the row data changes or the table
+ * is redrawn. If you pass the same header instance (==) into adjacent columns,
+ * the header will span the columns.
+ * </p>
+ * 
  * <p>
  * <h3>Examples</h3>
  * <dl>
@@ -269,8 +287,8 @@
     @Template("<table><tfoot>{0}</tfoot></table>")
     SafeHtml tfoot(SafeHtml rowHtml);
 
-    @Template("<th class=\"{0}\">{1}</th>")
-    SafeHtml th(String classes, SafeHtml contents);
+    @Template("<th colspan=\"{0}\" class=\"{1}\">{2}</th>")
+    SafeHtml th(int colspan, String classes, SafeHtml contents);
 
     @Template("<table><thead>{0}</thead></table>")
     SafeHtml thead(SafeHtml rowHtml);
@@ -432,11 +450,6 @@
 
   private final List<Header<?>> headers = new ArrayList<Header<?>>();
 
-  /**
-   * Set to true when the footer is stale.
-   */
-  private boolean headersStale;
-
   private TableRowElement hoveringRow;
 
   /**
@@ -631,7 +644,6 @@
     }
     CellBasedWidgetImpl.get().sinkEvents(this, consumedEvents);
 
-    headersStale = true;
     scheduleRedraw();
   }
 
@@ -750,7 +762,6 @@
     headers.remove(index);
     footers.remove(index);
     updateDependsOnSelection();
-    headersStale = true;
 
     // Find an interactive column. Stick with 0 if no column is interactive.
     if (index <= keyboardSelectedColumn) {
@@ -1119,7 +1130,7 @@
 
   /**
    * Render the header or footer.
-   *
+   * 
    * @param isFooter true if this is the footer table, false if the header table
    */
   private void createHeaders(boolean isFooter) {
@@ -1132,30 +1143,52 @@
     SafeHtmlBuilder sb = new SafeHtmlBuilder();
     sb.appendHtmlConstant("<tr>");
     int columnCount = columns.size();
-    int curColumn = 0;
-    for (Header<?> header : theHeaders) {
+    if (columnCount > 0) {
+      // Setup the first column.
+      Header<?> prevHeader = theHeaders.get(0);
+      int prevColspan = 1;
       StringBuilder classesBuilder = new StringBuilder(className);
-      if (curColumn == 0) {
-        classesBuilder.append(" ");
-        classesBuilder.append(isFooter ? style.cellTableFirstColumnFooter()
-            : style.cellTableFirstColumnHeader());
-      }
-      // The first and last columns could be the same column.
-      if (curColumn == columnCount - 1) {
-        classesBuilder.append(" ");
-        classesBuilder.append(isFooter ? style.cellTableLastColumnFooter()
-            : style.cellTableLastColumnHeader());
+      classesBuilder.append(" ");
+      classesBuilder.append(isFooter ? style.cellTableFirstColumnFooter()
+          : style.cellTableFirstColumnHeader());
+
+      // Loop through all column headers.
+      for (int curColumn = 1; curColumn < columnCount; curColumn++) {
+        Header<?> header = theHeaders.get(curColumn);
+
+        if (header != prevHeader) {
+          // The header has changed, so append the previous one.
+          SafeHtmlBuilder headerBuilder = new SafeHtmlBuilder();
+          if (prevHeader != null) {
+            hasHeader = true;
+            prevHeader.render(headerBuilder);
+          }
+          sb.append(template.th(prevColspan, classesBuilder.toString(),
+              headerBuilder.toSafeHtml()));
+
+          // Reset the previous header.
+          prevHeader = header;
+          prevColspan = 1;
+          classesBuilder = new StringBuilder(className);
+        } else {
+          // Increment the colspan if the headers == each other.
+          prevColspan++;
+        }
       }
 
+      // Append the last header.
       SafeHtmlBuilder headerBuilder = new SafeHtmlBuilder();
-      if (header != null) {
+      if (prevHeader != null) {
         hasHeader = true;
-        header.render(headerBuilder);
+        prevHeader.render(headerBuilder);
       }
 
-      sb.append(template.th(classesBuilder.toString(),
+      // The first and last columns could be the same column.
+      classesBuilder.append(" ");
+      classesBuilder.append(isFooter ? style.cellTableLastColumnFooter()
+          : style.cellTableLastColumnHeader());
+      sb.append(template.th(prevColspan, classesBuilder.toString(),
           headerBuilder.toSafeHtml()));
-      curColumn++;
     }
     sb.appendHtmlConstant("</tr>");
 
@@ -1167,11 +1200,8 @@
   }
 
   private void createHeadersAndFooters() {
-    if (headersStale) {
-      headersStale = false;
-      createHeaders(false);
-      createHeaders(true);
-    }
+    createHeaders(false);
+    createHeaders(true);
   }
 
   private void deselectKeyboardRow(int row) {
diff --git a/user/src/com/google/gwt/user/cellview/client/RowStyles.java b/user/src/com/google/gwt/user/cellview/client/RowStyles.java
index 4004665..f501d2b 100644
--- a/user/src/com/google/gwt/user/cellview/client/RowStyles.java
+++ b/user/src/com/google/gwt/user/cellview/client/RowStyles.java
@@ -31,5 +31,5 @@
    * @return the extra styles of the given row in a space-separated list, or
    * {@code null} if there are no extra styles for this row.
    */
-  public String getStyleNames(T row, int rowIndex);
+  String getStyleNames(T row, int rowIndex);
 }
diff --git a/user/src/com/google/gwt/user/client/Command.java b/user/src/com/google/gwt/user/client/Command.java
index 90b9bde..e664e31 100644
--- a/user/src/com/google/gwt/user/client/Command.java
+++ b/user/src/com/google/gwt/user/client/Command.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.user.client;
 
+import com.google.gwt.core.client.Scheduler;
+
 /**
  * Encapsulates an action for later execution, often from a different context.
  * 
@@ -22,14 +24,16 @@
  * The Command interface provides a layer of separation between the code
  * specifying some behavior and the code invoking that behavior. This separation
  * aids in creating reusable code. For example, a
- * {@link com.google.gwt.user.client.ui.MenuItem} can have a Command
- * associated with it that it executes when the menu item is chosen by the user.
+ * {@link com.google.gwt.user.client.ui.MenuItem} can have a Command associated
+ * with it that it executes when the menu item is chosen by the user.
  * Importantly, the code that constructed the Command to be executed when the
  * menu item is invoked knows nothing about the internals of the MenuItem class
- * and vice-versa.</p>
+ * and vice-versa.
+ * </p>
  * 
- * <p> The Command interface is often implemented with an anonymous inner class.
- * For example,
+ * <p>
+ * The Command interface is often implemented with an anonymous inner class. For
+ * example,
  * 
  * <pre>
  * Command sayHello = new Command() {
@@ -41,9 +45,9 @@
  * </pre>
  * 
  * </p>
+ * This type extends ScheduledCommand to help migrate from DeferredCommand API.
  */
-public interface Command {
-
+public interface Command extends Scheduler.ScheduledCommand {
   /**
    * Causes the Command to perform its encapsulated behavior.
    */
diff --git a/user/src/com/google/gwt/user/client/DeferredCommand.java b/user/src/com/google/gwt/user/client/DeferredCommand.java
index 9fe21d4..3601913 100644
--- a/user/src/com/google/gwt/user/client/DeferredCommand.java
+++ b/user/src/com/google/gwt/user/client/DeferredCommand.java
@@ -20,7 +20,13 @@
  * handlers have completed, using the {@link #addCommand(Command)} or
  * {@link #addCommand(IncrementalCommand)} methods. This is useful when you need
  * to execute code outside of the context of the current stack.
+ * 
+ * @deprecated Replaced by
+ *             {@link com.google.gwt.core.client.Scheduler#scheduleDeferred
+ *             Scheduler.scheduleDeferred()} because the static nature of this
+ *             API prevents effective mocking for JRE-only tests.
  */
+@Deprecated
 public class DeferredCommand {
   private static final CommandExecutor commandExecutor = new CommandExecutor();
 
@@ -80,6 +86,9 @@
    * {@link DeferredCommand}s or pauses that are added after this pause will
    * wait for an additional cycle through the system event loop before
    * executing.
+   * 
+   * @deprecated with no replacement because the presence of this method causes
+   *             arbitrary scheduling decisions
    */
   public static void addPause() {
     commandExecutor.submit((Command) null);
diff --git a/user/src/com/google/gwt/user/client/History.java b/user/src/com/google/gwt/user/client/History.java
index ea62acd..8076f11 100644
--- a/user/src/com/google/gwt/user/client/History.java
+++ b/user/src/com/google/gwt/user/client/History.java
@@ -79,7 +79,6 @@
    * @param listener the listener to be added
    * @deprecated use {@link History#addValueChangeHandler(ValueChangeHandler)} instead
    */
-  @SuppressWarnings("deprecation")
   @Deprecated
   public static void addHistoryListener(HistoryListener listener) {
     if (impl != null) {
@@ -194,7 +193,6 @@
    * 
    * @param listener the listener to be removed
    */
-  @SuppressWarnings("deprecation")
   @Deprecated
   public static void removeHistoryListener(HistoryListener listener) {
     if (impl != null) {
diff --git a/user/src/com/google/gwt/user/client/IncrementalCommand.java b/user/src/com/google/gwt/user/client/IncrementalCommand.java
index d2f9739..dd53bd3 100644
--- a/user/src/com/google/gwt/user/client/IncrementalCommand.java
+++ b/user/src/com/google/gwt/user/client/IncrementalCommand.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.user.client;
 
+import com.google.gwt.core.client.Scheduler.RepeatingCommand;
+
 /**
  * An <code>IncrementalCommand</code> is a command that is broken into one or
  * more substeps, each substep brings the whole command nearer to completion.
@@ -22,8 +24,13 @@
  * <code>false</code>.
  * 
  * {@example com.google.gwt.examples.IncrementalCommandExample}
+ * 
+ * @deprecated Replaced by {@link RepeatingCommand} and
+ *             {@link com.google.gwt.core.client.Scheduler#scheduleIncremental
+ *             Scheduler.scheduleIncremental()}
  */
-public interface IncrementalCommand {
+@Deprecated
+public interface IncrementalCommand extends RepeatingCommand {
   /**
    * Causes the <code>IncrementalCommand</code> to execute its encapsulated
    * behavior.
diff --git a/user/src/com/google/gwt/user/client/ResponseTextHandler.java b/user/src/com/google/gwt/user/client/ResponseTextHandler.java
index 7e608c6..bd0458e 100644
--- a/user/src/com/google/gwt/user/client/ResponseTextHandler.java
+++ b/user/src/com/google/gwt/user/client/ResponseTextHandler.java
@@ -15,9 +15,10 @@
  */
 package com.google.gwt.user.client;
 
+// TODO - is this class still used anywhere?
+
 /**
- * Implement this interface to receive HTTP completion events.  This event is
- * fired by {@link com.google.gwt.user.client.HTTPRequest}.
+ * Implement this interface to receive HTTP completion events.
  */
 public interface ResponseTextHandler {
 
diff --git a/user/src/com/google/gwt/user/client/Window.java b/user/src/com/google/gwt/user/client/Window.java
index d768a31..9c7339b 100644
--- a/user/src/com/google/gwt/user/client/Window.java
+++ b/user/src/com/google/gwt/user/client/Window.java
@@ -27,7 +27,6 @@
 import com.google.gwt.event.shared.GwtEvent;
 import com.google.gwt.event.shared.HandlerManager;
 import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.event.shared.HasHandlers;
 import com.google.gwt.http.client.URL;
 import com.google.gwt.http.client.UrlBuilder;
 import com.google.gwt.user.client.impl.WindowImpl;
@@ -479,7 +478,7 @@
   }
 
   private static class WindowHandlers extends HandlerManager implements
-      HasCloseHandlers<Window>, HasResizeHandlers, HasHandlers {
+      HasCloseHandlers<Window>, HasResizeHandlers {
 
     public WindowHandlers() {
       super(null);
diff --git a/user/src/com/google/gwt/user/client/rpc/core/java/util/logging/Level_CustomFieldSerializer.java b/user/src/com/google/gwt/user/client/rpc/core/java/util/logging/Level_CustomFieldSerializer.java
index 07f5335..dbd0416 100644
--- a/user/src/com/google/gwt/user/client/rpc/core/java/util/logging/Level_CustomFieldSerializer.java
+++ b/user/src/com/google/gwt/user/client/rpc/core/java/util/logging/Level_CustomFieldSerializer.java
@@ -23,9 +23,10 @@
 import java.util.logging.Level;
 
 /**
- * Custom serializer for Level class
+ * Custom serializer for Level class.
  */
 public class Level_CustomFieldSerializer {
+  @SuppressWarnings("unused")
   public static void deserialize(SerializationStreamReader reader,
       Level instance) throws SerializationException {
     // Nothing needed
diff --git a/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java b/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java
index d00658c..849ffe6 100644
--- a/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java
+++ b/user/src/com/google/gwt/user/client/rpc/impl/RemoteServiceProxy.java
@@ -273,9 +273,10 @@
           ex);
       callback.onFailure(iex);
     } finally {
-      boolean toss = statsContext.isStatsAvailable() &&
-          statsContext.stats(statsContext.bytesStat(methodName, requestData.length(),
-              "requestSent"));
+      if (statsContext.isStatsAvailable()) {
+        statsContext.stats(statsContext.bytesStat(methodName,
+            requestData.length(), "requestSent"));
+      }
     }
     return null;
   }
diff --git a/user/src/com/google/gwt/user/client/ui/CustomButton.java b/user/src/com/google/gwt/user/client/ui/CustomButton.java
index f07b08a..7cbe936 100644
--- a/user/src/com/google/gwt/user/client/ui/CustomButton.java
+++ b/user/src/com/google/gwt/user/client/ui/CustomButton.java
@@ -757,6 +757,7 @@
     }
   }
 
+  @Override
   public void setHTML(SafeHtml html) {
     setHTML(html.asString());
   }
diff --git a/user/src/com/google/gwt/user/client/ui/HTML.java b/user/src/com/google/gwt/user/client/ui/HTML.java
index 65b1b39..6fe54bf 100644
--- a/user/src/com/google/gwt/user/client/ui/HTML.java
+++ b/user/src/com/google/gwt/user/client/ui/HTML.java
@@ -161,12 +161,13 @@
 
   /**
    * Sets the label's content to the given HTML, applying the given direction.
-   * See {@link #setText(String, Direction)} for details on potential effects on
-   * alignment.
-   *
+   * See
+   * {@link #setText(String, com.google.gwt.i18n.client.HasDirection.Direction)
+   * setText(String, Direction)} for details on potential effects on alignment.
+   * 
    * @param html the new widget's HTML content
    * @param dir the content's direction. Note: {@code Direction.DEFAULT} means
-   *        direction should be inherited from the widget's parent element.
+   *          direction should be inherited from the widget's parent element.
    */
   public void setHTML(String html, Direction dir) {
     setTextOrHtml(html, dir, true);
@@ -175,13 +176,15 @@
   /**
    * Sets this object's contents via known-safe HTML.
    * 
-   * @see com.google.gwt.safehtml.client.HasSafeHtml#setSafeHtml
+   * @see com.google.gwt.safehtml.client.HasSafeHtml#setHTML(SafeHtml)
    * @param html the html to set.
    */
+  @Override
   public void setHTML(SafeHtml html) {
     setHTML(html.asString());
   }
 
+  @Override
   public void setHTML(SafeHtml html, Direction dir) {
     setHTML(html.asString(), dir);
   }
diff --git a/user/src/com/google/gwt/user/client/ui/InlineHTML.java b/user/src/com/google/gwt/user/client/ui/InlineHTML.java
index e624fbe..a1a0bc1 100644
--- a/user/src/com/google/gwt/user/client/ui/InlineHTML.java
+++ b/user/src/com/google/gwt/user/client/ui/InlineHTML.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
-import com.google.gwt.i18n.client.HasDirection.Direction;
 import com.google.gwt.safehtml.shared.SafeHtml;
 
 /**
diff --git a/user/src/com/google/gwt/user/client/ui/InlineLabel.java b/user/src/com/google/gwt/user/client/ui/InlineLabel.java
index f9c18f8..75bafab 100644
--- a/user/src/com/google/gwt/user/client/ui/InlineLabel.java
+++ b/user/src/com/google/gwt/user/client/ui/InlineLabel.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
-import com.google.gwt.i18n.client.HasDirection.Direction;
 
 /**
  * A widget that contains arbitrary text, <i>not</i> interpreted as HTML.
diff --git a/user/src/com/google/gwt/user/client/ui/Label.java b/user/src/com/google/gwt/user/client/ui/Label.java
index 7c81449..9811f76 100644
--- a/user/src/com/google/gwt/user/client/ui/Label.java
+++ b/user/src/com/google/gwt/user/client/ui/Label.java
@@ -402,11 +402,12 @@
   /**
    * Sets the label's content to the given text.
    * <p>
-   * Doesn't change the widget's direction or horizontal alignment if
-   * {@code directionEstimator} is null. Otherwise, the widget's direction is
-   * set using the estimator, and its alignment may therefore change as
-   * described in {@link #setText(String, Direction)}.
-   *
+   * Doesn't change the widget's direction or horizontal alignment if {@code
+   * directionEstimator} is null. Otherwise, the widget's direction is set using
+   * the estimator, and its alignment may therefore change as described in
+   * {@link #setText(String, com.google.gwt.i18n.client.HasDirection.Direction)
+   * setText(String, Direction)}.
+   * 
    * @param text the widget's new text
    */
   public void setText(String text) {
@@ -500,15 +501,15 @@
 
   /**
    * Sets the label's content to the given value (either plain text or HTML),
-   * applying the given direction.
-   * See {@link #setText(String, Direction)} for details on potential effects on
-   * alignment.
+   * applying the given direction. See
+   * {@link #setText(String, com.google.gwt.i18n.client.HasDirection.Direction)
+   * setText(String, Direction)} for details on potential effects on alignment.
    * <p>
    * Implementation details:
    * <ul>
-   * <li> If the widget's element is a &lt;div&gt;, sets its dir attribute
+   * <li>If the widget's element is a &lt;div&gt;, sets its dir attribute
    * according to the given direction.
-   * <li> Otherwise (i.e. the widget's element is a &lt;span&gt;), the direction
+   * <li>Otherwise (i.e. the widget's element is a &lt;span&gt;), the direction
    * is set using a nested &lt;span dir=...&gt; element which holds the content
    * of the widget. This nested span may be followed by a zero-width Unicode
    * direction character (LRM or RLM). This manipulation is necessary to prevent
@@ -516,7 +517,7 @@
    * of its context. See {@link com.google.gwt.i18n.shared.BidiFormatter} for
    * more details.
    * </ul>
-   *
+   * 
    * @param content the widget's new content
    * @param dir the content's direction
    * @param isHtml whether the content is HTML
@@ -572,5 +573,3 @@
     }
   }
 }
-
-
diff --git a/user/src/com/google/gwt/user/client/ui/PopupPanel.java b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
index 15b39c6..9d1cd74 100644
--- a/user/src/com/google/gwt/user/client/ui/PopupPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
@@ -719,7 +719,6 @@
    * @return <code>false</code> to suppress the event
    * @deprecated Use {@link #onPreviewNativeEvent} instead
    */
-  @SuppressWarnings("unused")
   @Deprecated
   public boolean onKeyDownPreview(char key, int modifiers) {
     return true;
@@ -735,7 +734,6 @@
    * @return <code>false</code> to suppress the event
    * @deprecated Use {@link #onPreviewNativeEvent} instead
    */
-  @SuppressWarnings("unused")
   @Deprecated
   public boolean onKeyPressPreview(char key, int modifiers) {
     return true;
@@ -751,7 +749,6 @@
    * @return <code>false</code> to suppress the event
    * @deprecated Use {@link #onPreviewNativeEvent} instead
    */
-  @SuppressWarnings("unused")
   @Deprecated
   public boolean onKeyUpPreview(char key, int modifiers) {
     return true;
diff --git a/user/src/com/google/gwt/user/client/ui/StackLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/StackLayoutPanel.java
index 908e992..9ea1e6a 100644
--- a/user/src/com/google/gwt/user/client/ui/StackLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/StackLayoutPanel.java
@@ -416,7 +416,7 @@
    *
    * Use care when setting an object's HTML; it is an easy way to expose
    * script-based security problems. Consider using
-   * {@link #setHeaderSafeHtml(int, SafeHtml)} or 
+   * {@link #setHeaderHTML(int, SafeHtml)} or 
    * {@link #setHeaderText(int, String)} whenever possible.
    *
    * @param index the index of the header whose HTML is to be set
diff --git a/user/src/com/google/gwt/user/client/ui/SuggestOracle.java b/user/src/com/google/gwt/user/client/ui/SuggestOracle.java
index 2941353..447bd1c 100644
--- a/user/src/com/google/gwt/user/client/ui/SuggestOracle.java
+++ b/user/src/com/google/gwt/user/client/ui/SuggestOracle.java
@@ -182,7 +182,7 @@
 
     /**
      * Gets whether or not the suggestion list was truncated due to the
-     * {@Request#getLimit}.
+     * {@link Request#getLimit}.
      */
     public boolean hasMoreSuggestions() {
       return this.moreSuggestions;
@@ -190,7 +190,7 @@
 
     /**
      * Sets whether or not the suggestion list was truncated due to the
-     * {@Request#getLimit}.
+     * {@link Request#getLimit}.
      */
     public void setMoreSuggestions(boolean moreSuggestions) {
       this.moreSuggestions = moreSuggestions;
@@ -198,12 +198,12 @@
 
     /**
      * Sets whether or not the suggestion list was truncated due to the
-     * {@Request#getLimit}, by providing an exact count of remaining 
+     * {@link Request#getLimit}, by providing an exact count of remaining 
      * suggestions.
      * 
      * @param count number of truncated suggestions. Pass 0 to indicate there
-     *        are no other suggestions, which is equivlent to 
-     *        {@link #setMoreSuggestions(false)}.
+     *        are no other suggestions, which is equivalent to 
+     *        {@link #setMoreSuggestions(boolean) setMoreSuggestions(false)}.
      */
     public void setMoreSuggestionsCount(int count) {
       this.numMoreSuggestions = count;
diff --git a/user/src/com/google/gwt/user/client/ui/TabBar.java b/user/src/com/google/gwt/user/client/ui/TabBar.java
index 97ff54a..19367ea 100644
--- a/user/src/com/google/gwt/user/client/ui/TabBar.java
+++ b/user/src/com/google/gwt/user/client/ui/TabBar.java
@@ -259,8 +259,8 @@
   }
 
   /**
-   * @deprecated Use {@link #addBeforeSelectionHandler} and {#link
-   *             #addSelectionHandler} instead
+   * @deprecated Use {@link #addBeforeSelectionHandler(BeforeSelectionHandler)} 
+   * and {@link #addSelectionHandler(SelectionHandler)} instead
    */
   @Deprecated
   public void addTabListener(TabListener listener) {
@@ -522,7 +522,7 @@
    * 
    * Use care when setting an object's HTML; it is an easy way to expose
    * script-based security problems. Consider using
-   * {@link #setTabText(int, String)} or {@link setTabHTML(int, SafeHtml)}
+   * {@link #setTabText(int, String)} or {@link #setTabHTML(int, SafeHtml)}
    * whenever possible.
    * 
    * @param index the index of the tab whose HTML is to be set
diff --git a/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
index 5b907d3..378a93b 100644
--- a/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/TabLayoutPanel.java
@@ -557,7 +557,7 @@
    *
    * Use care when setting an object's HTML; it is an easy way to expose
    * script-based security problems. Consider using
-   * {@link #setTabSafeHtml(int, SafeHtml)} or 
+   * {@link #setTabHTML(int, SafeHtml)} or 
    * {@link #setTabText(int, String)} whenever possible.
    *
    * @param index the index of the tab whose HTML is to be set
diff --git a/user/src/com/google/gwt/user/client/ui/TabPanel.java b/user/src/com/google/gwt/user/client/ui/TabPanel.java
index e2c5ea6..1253cdf 100644
--- a/user/src/com/google/gwt/user/client/ui/TabPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/TabPanel.java
@@ -67,8 +67,8 @@
  * @see TabLayoutPanel
  */
 
-@SuppressWarnings("deprecation")
-//Cannot do anything about tab panel implementing TabListener until next release.
+// Cannot do anything about tab panel implementing TabListener until next
+// release
 @Deprecated
 public class TabPanel extends Composite implements TabListener,
     SourcesTabEvents, HasWidgets, HasAnimation, IndexedPanel.ForIsWidget,
diff --git a/user/src/com/google/gwt/user/client/ui/ValueListBox.java b/user/src/com/google/gwt/user/client/ui/ValueListBox.java
index 1fc235d..24b8b93 100644
--- a/user/src/com/google/gwt/user/client/ui/ValueListBox.java
+++ b/user/src/com/google/gwt/user/client/ui/ValueListBox.java
@@ -36,8 +36,8 @@
  * Implementation of {@link HasConstrainedValue} based on a
  * {@link com.google.gwt.dom.client.SelectElement}.
  * <p>
- * A {@link Renderer<T>} is used to get user presentable strings to display in
- * the select element.
+ * A {@link Renderer Renderer<T>} is used to get user-presentable strings to
+ * display in the select element.
  * 
  * @param <T> the value type
  */
diff --git a/user/src/com/google/gwt/user/client/ui/Widget.java b/user/src/com/google/gwt/user/client/ui/Widget.java
index 43191cd..c80a25a 100644
--- a/user/src/com/google/gwt/user/client/ui/Widget.java
+++ b/user/src/com/google/gwt/user/client/ui/Widget.java
@@ -22,8 +22,8 @@
 import com.google.gwt.event.logical.shared.HasAttachHandlers;
 import com.google.gwt.event.shared.EventHandler;
 import com.google.gwt.event.shared.GwtEvent;
-import com.google.gwt.event.shared.GwtEvent.Type;
 import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.event.shared.GwtEvent.Type;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Event;
@@ -378,7 +378,8 @@
   /**
    * This method is called immediately after a widget becomes attached to the
    * browser's document. This default implementation notifies the widgets
-   * {@link AttachEvent.Handler}s.
+   * {@link com.google.gwt.event.logical.shared.AttachEvent.Handler
+   * AttachEvent.Handler}s.
    */
   protected void onLoad() {
     AttachEvent.fire(this, true);
@@ -386,8 +387,9 @@
 
   /**
    * This method is called immediately before a widget will be detached from the
-   * browser's document. This default implementation notifies the widgets
-   * {@link AttachEvent.Handler}s.
+   * browser's document. This default implementation notifies the widget's
+   * {@link com.google.gwt.event.logical.shared.AttachEvent.Handler
+   * AttachEvent.Handler}s.
    */
   protected void onUnload() {
     AttachEvent.fire(this, false);
diff --git a/user/src/com/google/gwt/user/datepicker/client/DateChangeEvent.java b/user/src/com/google/gwt/user/datepicker/client/DateChangeEvent.java
index c08c8cc..3734073 100644
--- a/user/src/com/google/gwt/user/datepicker/client/DateChangeEvent.java
+++ b/user/src/com/google/gwt/user/datepicker/client/DateChangeEvent.java
@@ -32,7 +32,6 @@
    * Use this call rather than making the decision to short circuit yourself for
    * safe handling of null.
    * 
-   * @param <I> the old value type
    * @param <S> The event source
    * @param source the source of the handlers
    * @param oldValue the oldValue, may be null
diff --git a/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java b/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java
index b417680..8e1d36e 100644
--- a/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java
+++ b/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java
@@ -217,7 +217,7 @@
    * @throws ServletException if the content length of the request is not
    *           specified of if the request's content type is not
    *           'text/x-gwt-rpc' and 'charset=utf-8'
-   * @deprecated Use {@link readContent} instead.
+   * @deprecated Use {@link #readContent} instead.
    */
   @Deprecated
   public static String readContentAsUtf8(HttpServletRequest request)
@@ -241,7 +241,7 @@
    * @throws ServletException if the content length of the request is not
    *           specified of if the request's content type is not
    *           'text/x-gwt-rpc' and 'charset=utf-8'
-   * @deprecated Use {@link readContent} instead.
+   * @deprecated Use {@link #readContent} instead.
    */
   @Deprecated
   public static String readContentAsUtf8(HttpServletRequest request,
diff --git a/user/src/com/google/gwt/user/tools/.classpathsrc b/user/src/com/google/gwt/user/tools/.classpathsrc
index 8533fe3..562628a 100644
--- a/user/src/com/google/gwt/user/tools/.classpathsrc
+++ b/user/src/com/google/gwt/user/tools/.classpathsrc
@@ -6,4 +6,5 @@
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
    <classpathentry kind="output" path="@warFolder/WEB-INF/classes"/>
+@serverClasspathLibs
 </classpath>
diff --git a/user/src/com/google/gwt/user/tools/WebAppCreator.java b/user/src/com/google/gwt/user/tools/WebAppCreator.java
index a3cdf60..8c5f373 100644
--- a/user/src/com/google/gwt/user/tools/WebAppCreator.java
+++ b/user/src/com/google/gwt/user/tools/WebAppCreator.java
@@ -338,6 +338,7 @@
     File srcDir = Utility.getDirectory(outDir, srcFolder, true);
     File warDir = Utility.getDirectory(outDir, warFolder, true);
     File webInfDir = Utility.getDirectory(warDir, "WEB-INF", true);
+    File libDir = Utility.getDirectory(webInfDir, "lib", true);
     File moduleDir = Utility.getDirectory(srcDir, modulePackageName.replace(
         '.', '/'), true);
     File clientDir = Utility.getDirectory(moduleDir, "client", true);
@@ -370,6 +371,19 @@
     replacements.put("@testFolder", testFolder);
     replacements.put("@warFolder", warFolder);
 
+    // Collect the list of server libs to include on the eclipse classpath.
+    StringBuilder serverLibs = new StringBuilder();
+    if (libDir.exists()) {
+      for (File file : libDir.listFiles()) {
+        if (file.getName().toLowerCase().endsWith(".jar")) {
+          serverLibs.append("   <classpathentry kind=\"lib\" path=\"war/WEB-INF/lib/");
+          serverLibs.append(file.getName());
+          serverLibs.append("\"/>\n");
+        }
+      }
+    }
+    replacements.put("@serverClasspathLibs", serverLibs.toString());
+
     String antEclipseRule = "";
     if (noEclipse) {
       /*
diff --git a/user/src/com/google/gwt/view/client/RangeChangeEvent.java b/user/src/com/google/gwt/view/client/RangeChangeEvent.java
index eaf0219..4a58b66 100644
--- a/user/src/com/google/gwt/view/client/RangeChangeEvent.java
+++ b/user/src/com/google/gwt/view/client/RangeChangeEvent.java
@@ -48,7 +48,7 @@
    * @param source the source of the handlers
    * @param range the new range
    */
-  public static <I> void fire(HasRows source, Range range) {
+  public static void fire(HasRows source, Range range) {
     if (TYPE != null) {
       RangeChangeEvent event = new RangeChangeEvent(range);
       source.fireEvent(event);
diff --git a/user/src/com/google/gwt/view/client/RowCountChangeEvent.java b/user/src/com/google/gwt/view/client/RowCountChangeEvent.java
index 19f71e9..c166d3e 100644
--- a/user/src/com/google/gwt/view/client/RowCountChangeEvent.java
+++ b/user/src/com/google/gwt/view/client/RowCountChangeEvent.java
@@ -48,7 +48,7 @@
    * @param source the source of the handlers
    * @param rowCount the new rowCount
    */
-  public static <I> void fire(HasRows source, int rowCount, boolean isExact) {
+  public static void fire(HasRows source, int rowCount, boolean isExact) {
     if (TYPE != null) {
       RowCountChangeEvent event = new RowCountChangeEvent(rowCount, isExact);
       source.fireEvent(event);
diff --git a/user/src/com/google/gwt/xhr/client/ReadyStateChangeHandler.java b/user/src/com/google/gwt/xhr/client/ReadyStateChangeHandler.java
index feec633..6ea5905 100644
--- a/user/src/com/google/gwt/xhr/client/ReadyStateChangeHandler.java
+++ b/user/src/com/google/gwt/xhr/client/ReadyStateChangeHandler.java
@@ -16,13 +16,13 @@
 package com.google.gwt.xhr.client;
 
 /**
- * A ready-state callback for an {@Link XMLHttpRequest} object.
+ * A ready-state callback for an {@link XMLHttpRequest} object.
  */
 public interface ReadyStateChangeHandler {
 
   /**
    * This is called whenever the state of the XMLHttpRequest changes. See
-   * {@link XMLHttpRequest#setOnReadyStateHandler}.
+   * {@link XMLHttpRequest#setOnReadyStateChange}.
    * 
    * @param xhr the object whose state has changed.
    */
diff --git a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
index a84e8a3..c1a1d15 100644
--- a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
+++ b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
@@ -19,10 +19,11 @@
 
 /**
  * The native XMLHttpRequest object. Most applications should use the higher-
- * level {@link RequestBuilder} class unless they need specific functionality
- * provided by the XMLHttpRequest object.
+ * level {@link com.google.gwt.http.client.RequestBuilder} class unless they
+ * need specific functionality provided by the XMLHttpRequest object.
  * 
- * @see http://www.w3.org/TR/XMLHttpRequest/
+ * See <a href="http://www.w3.org/TR/XMLHttpRequest/"
+ * >http://www.w3.org/TR/XMLHttpRequest/</a>/
  */
 public class XMLHttpRequest extends JavaScriptObject {
 
@@ -100,8 +101,9 @@
 
   /**
    * Aborts the current request.
-   * 
-   * @see http://www.w3.org/TR/XMLHttpRequest/#abort
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#abort"
+   * >http://www.w3.org/TR/XMLHttpRequest/#abort</a>.
    */
   public final native void abort() /*-{
     this.abort();
@@ -109,9 +111,11 @@
 
   /**
    * Clears the {@link ReadyStateChangeHandler}.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange"
+   * >http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange</a>.
    * 
    * @see #clearOnReadyStateChange()
-   * @see http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange
    */
   public final native void clearOnReadyStateChange() /*-{
     var self = this;
@@ -124,9 +128,11 @@
 
   /**
    * Gets all the HTTP response headers, as a single string.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#getallresponseheaders"
+   * >http://www.w3.org/TR/XMLHttpRequest/#getallresponseheaders</a>.
    * 
    * @return the response headers.
-   * @see http://www.w3.org/TR/XMLHttpRequest/#getallresponseheaders
    */
   public final native String getAllResponseHeaders() /*-{
     return this.getAllResponseHeaders();
@@ -134,9 +140,11 @@
 
   /**
    * Get's the current ready-state.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#readystate"
+   * >http://www.w3.org/TR/XMLHttpRequest/#readystate</a>.
    * 
    * @return the ready-state constant
-   * @see http://www.w3.org/TR/XMLHttpRequest/#readystate
    */
   public final native int getReadyState() /*-{
     return this.readyState;
@@ -144,10 +152,12 @@
 
   /**
    * Gets an HTTP response header.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#getresponseheader"
+   * >http://www.w3.org/TR/XMLHttpRequest/#getresponseheader</a>.
    * 
    * @param header the response header to be retrieved
    * @return the header value
-   * @see http://www.w3.org/TR/XMLHttpRequest/#getresponseheader
    */
   public final native String getResponseHeader(String header) /*-{
     return this.getResponseHeader(header);
@@ -155,9 +165,11 @@
 
   /**
    * Gets the response text.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#responsetext"
+   * >http://www.w3.org/TR/XMLHttpRequest/#responsetext</a>.
    * 
    * @return the response text
-   * @see http://www.w3.org/TR/XMLHttpRequest/#responsetext
    */
   public final native String getResponseText() /*-{
     return this.responseText;
@@ -165,9 +177,11 @@
 
   /**
    * Gets the status code.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#status"
+   * >http://www.w3.org/TR/XMLHttpRequest/#status</a>.
    * 
    * @return the status code
-   * @see http://www.w3.org/TR/XMLHttpRequest/#status
    */
   public final native int getStatus() /*-{
     return this.status;
@@ -175,9 +189,11 @@
 
   /**
    * Gets the status text.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#statustext"
+   * >http://www.w3.org/TR/XMLHttpRequest/#statustext</a>.
    * 
    * @return the status text
-   * @see http://www.w3.org/TR/XMLHttpRequest/#statustext
    */
   public final native String getStatusText() /*-{
     return this.statusText;
@@ -185,10 +201,12 @@
 
   /**
    * Opens an asynchronous connection.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#open"
+   * >http://www.w3.org/TR/XMLHttpRequest/#open</a>.
    * 
    * @param httpMethod the HTTP method to use
    * @param url the URL to be opened
-   * @see http://www.w3.org/TR/XMLHttpRequest/#open
    */
   public final native void open(String httpMethod, String url) /*-{
     this.open(httpMethod, url, true);
@@ -196,11 +214,13 @@
 
   /**
    * Opens an asynchronous connection.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#open"
+   * >http://www.w3.org/TR/XMLHttpRequest/#open</a>.
    * 
    * @param httpMethod the HTTP method to use
    * @param url the URL to be opened
    * @param user user to use in the URL
-   * @see http://www.w3.org/TR/XMLHttpRequest/#open
    */
   public final native void open(String httpMethod, String url, String user) /*-{
     this.open(httpMethod, url, true, user);
@@ -208,12 +228,14 @@
 
   /**
    * Opens an asynchronous connection.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#open"
+   * >http://www.w3.org/TR/XMLHttpRequest/#open</a>.
    * 
    * @param httpMethod the HTTP method to use
    * @param url the URL to be opened
    * @param user user to use in the URL
    * @param password password to use in the URL
-   * @see http://www.w3.org/TR/XMLHttpRequest/#open
    */
   public final native void open(String httpMethod, String url, String user,
       String password) /*-{
@@ -231,9 +253,11 @@
 
   /**
    * Initiates a request with data.  If there is no data, specify null.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#send"
+   * >http://www.w3.org/TR/XMLHttpRequest/#send</a>.
    * 
    * @param requestData the data to be sent with the request
-   * @see http://www.w3.org/TR/XMLHttpRequest/#send
    */
   public final native void send(String requestData) /*-{
     this.send(requestData);
@@ -242,6 +266,9 @@
   /**
    * Sets the {@link ReadyStateChangeHandler} to be notified when the object's
    * ready-state changes.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange"
+   * >http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange</a>.
    * 
    * <p>
    * Note: Applications <em>must</em> call {@link #clearOnReadyStateChange()}
@@ -251,7 +278,6 @@
    * 
    * @param handler the handler to be called when the ready state changes
    * @see #clearOnReadyStateChange()
-   * @see http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange
    */
   public final native void setOnReadyStateChange(ReadyStateChangeHandler handler) /*-{
     // The 'this' context is always supposed to point to the xhr object in the
@@ -264,10 +290,12 @@
 
   /**
    * Sets a request header.
+   * <p>
+   * See <a href="http://www.w3.org/TR/XMLHttpRequest/#setrequestheader"
+   * >http://www.w3.org/TR/XMLHttpRequest/#setrequestheader</a>.
    * 
    * @param header the header to be set
    * @param value the header's value
-   * @see http://www.w3.org/TR/XMLHttpRequest/#setrequestheader
    */
   public final native void setRequestHeader(String header, String value) /*-{
     this.setRequestHeader(header, value);
diff --git a/user/test/com/google/gwt/core/ext/test/CrossSiteIframeLinkerTest.java b/user/test/com/google/gwt/core/ext/test/CrossSiteIframeLinkerTest.java
index b6b8d2f..81a2684 100644
--- a/user/test/com/google/gwt/core/ext/test/CrossSiteIframeLinkerTest.java
+++ b/user/test/com/google/gwt/core/ext/test/CrossSiteIframeLinkerTest.java
@@ -19,7 +19,6 @@
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 
-
 /**
  * Integration test of the cross-site iframe linker.
  */
diff --git a/user/test/com/google/gwt/dev/jjs/test/EnumsWithNameObfuscationTest.java b/user/test/com/google/gwt/dev/jjs/test/EnumsWithNameObfuscationTest.java
index 295c689..d669efc 100644
--- a/user/test/com/google/gwt/dev/jjs/test/EnumsWithNameObfuscationTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/EnumsWithNameObfuscationTest.java
@@ -78,8 +78,7 @@
     } catch (IllegalArgumentException expected) {
     }
   }
-  
-  
+
   @Override
   public void testCompareTo() {
     
diff --git a/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java b/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
index 158331b..048745d 100644
--- a/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
+++ b/user/test/com/google/gwt/requestfactory/client/RequestFactoryTest.java
@@ -924,7 +924,7 @@
    */
   public void testNullValueInIntegerListRequest() {
     delayTestFinish(DELAY_TEST_FINISH);
-    List<Integer> list = Arrays.asList(new Integer[]{1, 2, null});
+    List<Integer> list = Arrays.asList(new Integer[] {1, 2, null});
     final Request<Void> fooReq = req.simpleFooRequest().receiveNullValueInIntegerList(
         list);
     fooReq.fire(new Receiver<Void>() {
@@ -940,7 +940,7 @@
    */
   public void testNullValueInStringListRequest() {
     delayTestFinish(DELAY_TEST_FINISH);
-    List<String> list = Arrays.asList(new String[]{"nonnull", "null", null});
+    List<String> list = Arrays.asList(new String[] {"nonnull", "null", null});
     final Request<Void> fooReq = req.simpleFooRequest().receiveNullValueInStringList(
         list);
     fooReq.fire(new Receiver<Void>() {
@@ -1762,7 +1762,7 @@
       @Override
       public void onSuccess(SimpleFooProxy response) {
         assertEquals(2, response.getOneToManyField().size());
-        
+
         // Check lists of proxies returned from a mutable object are mutable
         response = simpleFooRequest().edit(response);
         response.getOneToManyField().get(0).setUserName("canMutate");
@@ -1960,6 +1960,64 @@
     });
   }
 
+  /**
+   * This is analagous to FindServiceTest.testFetchDeletedEntity() only we're
+   * trying to invoke a method on the deleted entity using a stale EntityProxy
+   * reference on the client.
+   */
+  public void testUseOfDeletedEntity() {
+    delayTestFinish(DELAY_TEST_FINISH);
+    SimpleBarRequest context = simpleBarRequest();
+    SimpleBarProxy willDelete = context.create(SimpleBarProxy.class);
+    willDelete.setUserName("A");
+
+    // Persist the newly-created object
+    context.persistAndReturnSelf().using(willDelete).fire(
+        new Receiver<SimpleBarProxy>() {
+          @Override
+          public void onSuccess(SimpleBarProxy response) {
+            assertEquals("A", response.getUserName());
+            // Mark the object as deleted
+            SimpleBarRequest context = simpleBarRequest();
+            response = context.edit(response);
+            response.setFindFails(true);
+            response.setUserName("B");
+            context.persistAndReturnSelf().using(response).fire(
+                new Receiver<SimpleBarProxy>() {
+
+                  @Override
+                  public void onSuccess(SimpleBarProxy response) {
+                    // The last-known state should be returned
+                    assertNotNull(response);
+                    assertEquals("B", response.getUserName());
+
+                    SimpleBarRequest context = simpleBarRequest();
+                    // Ensure attempts to mutate deleted objects don't blow up
+                    response = context.edit(response);
+                    response.setUserName("C");
+
+                    // Attempting to use the now-deleted object should fail
+                    context.persistAndReturnSelf().using(response).fire(
+                        new Receiver<SimpleBarProxy>() {
+                          @Override
+                          public void onFailure(ServerFailure error) {
+                            assertTrue(error.getMessage().contains(
+                                "The requested entity is not available on"
+                                    + " the server"));
+                            finishTestAndReset();
+                          }
+
+                          @Override
+                          public void onSuccess(SimpleBarProxy response) {
+                            fail();
+                          }
+                        });
+                  }
+                });
+          }
+        });
+  }
+
   public void testViolationAbsent() {
     delayTestFinish(DELAY_TEST_FINISH);
 
diff --git a/user/test/com/google/gwt/resources/client/DataResourceDoNotEmbedTest.java b/user/test/com/google/gwt/resources/client/DataResourceDoNotEmbedTest.java
index cb96a26..e9f188b 100644
--- a/user/test/com/google/gwt/resources/client/DataResourceDoNotEmbedTest.java
+++ b/user/test/com/google/gwt/resources/client/DataResourceDoNotEmbedTest.java
@@ -42,7 +42,7 @@
   }
 
   /**
-   * RFC 2397 data URL scheme
+   * RFC 2397 data URL scheme.
    */
   private static final String DATA_URL_SCHEME = "data:";
 
diff --git a/user/test/com/google/gwt/uibinder/test/client/HandlerDemo.java b/user/test/com/google/gwt/uibinder/test/client/HandlerDemo.java
index ad812af..4416a5a 100644
--- a/user/test/com/google/gwt/uibinder/test/client/HandlerDemo.java
+++ b/user/test/com/google/gwt/uibinder/test/client/HandlerDemo.java
@@ -71,8 +71,7 @@
   }
 
   @UiHandler("buttonSubmit")
-  @SuppressWarnings("unused")
-  void doClickSubmit(ClickEvent ignored) {
+  void doClickSubmit(@SuppressWarnings("unused") ClickEvent ignored) {
     panelForm.submit();
   }
 
diff --git a/user/test/com/google/gwt/user/cellview/client/CellTableTest.java b/user/test/com/google/gwt/user/cellview/client/CellTableTest.java
index ad5a790..4c42144 100644
--- a/user/test/com/google/gwt/user/cellview/client/CellTableTest.java
+++ b/user/test/com/google/gwt/user/cellview/client/CellTableTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2010 Google Inc.
- *
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- *
+ * 
  * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -16,12 +16,130 @@
 package com.google.gwt.user.cellview.client;
 
 import com.google.gwt.cell.client.TextCell;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.TableCellElement;
+import com.google.gwt.dom.client.TableElement;
+import com.google.gwt.dom.client.TableRowElement;
+import com.google.gwt.dom.client.TableSectionElement;
+import com.google.gwt.user.cellview.client.CellTable.Resources;
+import com.google.gwt.user.cellview.client.CellTable.Style;
 
 /**
  * Tests for {@link CellTable}.
  */
 public class CellTableTest extends AbstractHasDataTestBase {
 
+  /**
+   * Test headers that span multiple columns.
+   */
+  public void testMultiColumnHeader() {
+    Resources res = GWT.create(Resources.class);
+    CellTable<String> table = new CellTable<String>(10, res);
+    TextHeader header = new TextHeader("Hello");
+
+    // Get the style information.
+    Style style = res.cellTableStyle();
+    String styleHeader = style.cellTableHeader();
+    String styleFirstColumn = style.cellTableFirstColumnHeader();
+    String styleLastColumn = style.cellTableLastColumnHeader();
+
+    // No header.
+    table.redraw();
+    assertEquals(0, getHeaderCount(table));
+
+    // Single column.
+    table.addColumn(new TextColumn<String>() {
+      @Override
+      public String getValue(String object) {
+        return null;
+      }
+    }, header);
+    table.redraw();
+    assertEquals(1, getHeaderCount(table));
+    assertEquals(1, getHeaderElement(table, 0).getColSpan());
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleFirstColumn));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleLastColumn));
+
+    // Header spans both columns.
+    table.addColumn(new TextColumn<String>() {
+      @Override
+      public String getValue(String object) {
+        return null;
+      }
+    }, header);
+    table.redraw();
+    assertEquals(1, getHeaderCount(table));
+    assertEquals(2, getHeaderElement(table, 0).getColSpan());
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleFirstColumn));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleLastColumn));
+
+    // Header spans all three columns.
+    table.addColumn(new TextColumn<String>() {
+      @Override
+      public String getValue(String object) {
+        return null;
+      }
+    }, header);
+    table.redraw();
+    assertEquals(1, getHeaderCount(table));
+    assertEquals(3, getHeaderElement(table, 0).getColSpan());
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleFirstColumn));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleLastColumn));
+
+    // New header at fourth column.
+    table.addColumn(new TextColumn<String>() {
+      @Override
+      public String getValue(String object) {
+        return null;
+      }
+    }, "New Header");
+    table.redraw();
+    assertEquals(2, getHeaderCount(table));
+    assertEquals(3, getHeaderElement(table, 0).getColSpan());
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleFirstColumn));
+    assertEquals(1, getHeaderElement(table, 1).getColSpan());
+    assertTrue(getHeaderElement(table, 1).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 1).getClassName().contains(
+        styleLastColumn));
+
+    // Two separate spans of same header: HHHXHH.
+    table.addColumn(new TextColumn<String>() {
+      @Override
+      public String getValue(String object) {
+        return null;
+      }
+    }, header);
+    table.addColumn(new TextColumn<String>() {
+      @Override
+      public String getValue(String object) {
+        return null;
+      }
+    }, header);
+    table.redraw();
+    assertEquals(3, getHeaderCount(table));
+    assertEquals(3, getHeaderElement(table, 0).getColSpan());
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 0).getClassName().contains(
+        styleFirstColumn));
+    assertEquals(1, getHeaderElement(table, 1).getColSpan());
+    assertTrue(getHeaderElement(table, 1).getClassName().contains(styleHeader));
+    assertEquals(2, getHeaderElement(table, 2).getColSpan());
+    assertTrue(getHeaderElement(table, 2).getClassName().contains(styleHeader));
+    assertTrue(getHeaderElement(table, 2).getClassName().contains(
+        styleLastColumn));
+  }
+
   @Override
   protected CellTable<String> createAbstractHasData() {
     CellTable<String> table = new CellTable<String>();
@@ -39,4 +157,31 @@
     });
     return table;
   }
+
+  /**
+   * Get the number of column headers in the table.
+   * 
+   * @param table the {@link CellTable}
+   * @return the number of column headers
+   */
+  private int getHeaderCount(CellTable<?> table) {
+    TableElement tableElem = table.getElement().cast();
+    TableSectionElement thead = tableElem.getTHead();
+    TableRowElement tr = thead.getRows().getItem(0);
+    return tr.getCells().getLength();
+  }
+
+  /**
+   * Get a column header from the table.
+   * 
+   * @param table the {@link CellTable}
+   * @param column the column index
+   * @return the column header
+   */
+  private TableCellElement getHeaderElement(CellTable<?> table, int column) {
+    TableElement tableElem = table.getElement().cast();
+    TableSectionElement thead = tableElem.getTHead();
+    TableRowElement tr = thead.getRows().getItem(0);
+    return tr.getCells().getItem(column);
+  }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java b/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
index 026a8a9..02ba0ad 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
@@ -252,7 +252,7 @@
   }
 
   /**
-   * Tests SafeHtml constructor
+   * Tests SafeHtml constructor.
    */
   public void testSafeHtml() {
     TestTemplates templates = GWT.create(TestTemplates.class);
diff --git a/user/test/com/google/gwt/user/server/rpc/RPCServletUtilsTest.java b/user/test/com/google/gwt/user/server/rpc/RPCServletUtilsTest.java
index d6b90b6..27c6932 100644
--- a/user/test/com/google/gwt/user/server/rpc/RPCServletUtilsTest.java
+++ b/user/test/com/google/gwt/user/server/rpc/RPCServletUtilsTest.java
@@ -41,7 +41,6 @@
     final String mockContent;
     final String mockContentType;
 
-
     public MockReqContentType(String contentType) {
       this(contentType, "abcdefg");
     }