diff --git a/dev/oophm/overlay/com/google/gwt/dev/shell/PlatformSpecific.java b/dev/oophm/overlay/com/google/gwt/dev/shell/PlatformSpecific.java
index d32da9e..09bf046 100644
--- a/dev/oophm/overlay/com/google/gwt/dev/shell/PlatformSpecific.java
+++ b/dev/oophm/overlay/com/google/gwt/dev/shell/PlatformSpecific.java
@@ -15,6 +15,10 @@
  */
 package com.google.gwt.dev.shell;
 
+import com.google.gwt.core.ext.TreeLogger;
+import com.google.gwt.core.ext.TreeLogger.HelpInfo;
+import com.google.gwt.dev.shell.CheckForUpdates.UpdateResult;
+
 import java.lang.reflect.Constructor;
 import java.net.URL;
 import java.util.concurrent.Callable;
@@ -23,10 +27,6 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.TreeLogger.HelpInfo;
-import com.google.gwt.dev.shell.CheckForUpdates.UpdateResult;
-
 /**
  * Performs platform-specific class selection.
  */
diff --git a/user/src/com/google/gwt/user/client/ui/Button.java b/user/src/com/google/gwt/user/client/ui/Button.java
index 33d17f4..3eb189f 100644
--- a/user/src/com/google/gwt/user/client/ui/Button.java
+++ b/user/src/com/google/gwt/user/client/ui/Button.java
@@ -18,7 +18,6 @@
 import com.google.gwt.dom.client.ButtonElement;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.ButtonElement;
 import com.google.gwt.event.dom.client.ClickHandler;
 
 /**
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 8155ae4..12943db 100644
--- a/user/src/com/google/gwt/user/client/ui/PopupPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/PopupPanel.java
@@ -96,8 +96,8 @@
    * 
    * <ul>
    * <li>CENTER - Expand from the center of the popup</li>
-   * <li>ONE_WAY_CORNER - Expand from the top left corner, do not animate hiding
-   * </li>
+   * <li>ONE_WAY_CORNER - Expand from the top left corner, do not animate
+   * hiding </li>
    * </ul>
    */
   static enum AnimationType {
@@ -109,16 +109,16 @@
    */
   static class ResizeAnimation extends Animation {
     /**
-     * The offset height and width of the current {@link PopupPanel}.
-     */
-    private int offsetHeight, offsetWidth = -1;
-
-    /**
      * The {@link PopupPanel} being affected.
      */
     private PopupPanel curPanel = null;
 
     /**
+     * The offset height and width of the current {@link PopupPanel}.
+     */
+    private int offsetHeight, offsetWidth = -1;
+
+    /**
      * A boolean indicating whether we are showing or hiding the popup.
      */
     private boolean showing = false;
@@ -281,10 +281,10 @@
    */
   private AnimationType animType = AnimationType.CENTER;
 
-  private HandlerRegistration nativePreviewHandlerRegistration;
-
   private boolean autoHide, previewAllNativeEvents, modal, showing;
 
+  private List<Element> autoHidePartners;
+
   // Used to track requested size across changing child widgets
   private String desiredHeight;
 
@@ -292,16 +292,16 @@
 
   private boolean isAnimationEnabled = false;
 
-  private List<Element> autoHidePartners;
+  // the left style attribute in pixels
+  private int leftPosition = -1;
+
+  private HandlerRegistration nativePreviewHandlerRegistration;
 
   /**
    * The {@link ResizeAnimation} used to open and close the {@link PopupPanel}s.
    */
   private ResizeAnimation resizeAnimation = new ResizeAnimation(this);
 
-  // the left style attribute in pixels
-  private int leftPosition = -1;
-
   // The top style attribute in pixels
   private int topPosition = -1;
 
@@ -478,8 +478,8 @@
   }
 
   /**
-   * Returns <code>true</code> if the popup should be automatically hidden when
-   * the user clicks outside of it.
+   * Returns <code>true</code> if the popup should be automatically hidden
+   * when the user clicks outside of it.
    * 
    * @return true if autoHide is enabled, false if disabled
    */
@@ -585,14 +585,6 @@
     return true;
   }
 
-  @Override
-  protected void onUnload() {
-    // Just to be sure, we perform cleanup when the popup is unloaded (i.e.
-    // removed from the DOM). This is normally taken care of in hide(), but it
-    // can be missed if someone removes the popup directly from the RootPanel.
-    cleanup();
-  }
-
   /**
    * Remove an autoHide partner.
    * 
@@ -733,8 +725,8 @@
    * <code>visibility</code> style attribute. You need to call {@link #show()}
    * to actually attached/detach the {@link PopupPanel} to the page.
    * 
-   * @param visible <code>true</code> to show the object, <code>false</code> to
-   *          hide it
+   * @param visible <code>true</code> to show the object, <code>false</code>
+   *          to hide it
    * @see #show()
    * @see #hide()
    */
@@ -827,7 +819,7 @@
   protected com.google.gwt.user.client.Element getStyleElement() {
     return impl.getStyleElement(getPopupImplElement());
   }
- 
+
   protected void onPreviewNativeEvent(NativePreviewEvent event) {
     // Cancel the event based on the deprecated onEventPreview() method
     if (event.isFirstHandler()
@@ -836,6 +828,14 @@
     }
   }
 
+  @Override
+  protected void onUnload() {
+    // Just to be sure, we perform cleanup when the popup is unloaded (i.e.
+    // removed from the DOM). This is normally taken care of in hide(), but it
+    // can be missed if someone removes the popup directly from the RootPanel.
+    cleanup();
+  }
+
   /**
    * We control size by setting our child widget's size. However, if we don't
    * currently have a child, we record the size the user wanted so that when we
diff --git a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
index 868a429..ae63a6d 100644
--- a/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
+++ b/user/src/com/google/gwt/xhr/client/XMLHttpRequest.java
@@ -16,7 +16,6 @@
 package com.google.gwt.xhr.client;
 
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.http.client.RequestBuilder;
 
 /**
  * The native XMLHttpRequest object. Most applications should use the higher-
diff --git a/user/super/com/google/gwt/emul/java/lang/Class.java b/user/super/com/google/gwt/emul/java/lang/Class.java
index c02281b..515fecf 100644
--- a/user/super/com/google/gwt/emul/java/lang/Class.java
+++ b/user/super/com/google/gwt/emul/java/lang/Class.java
@@ -101,6 +101,8 @@
     return clazz;
   }
   
+  int modifiers;
+
   private Class<?> componentType;
 
   @SuppressWarnings("unused")
@@ -108,8 +110,6 @@
   
   private Class<? super T> enumSuperclass;
 
-  int modifiers;
-
   private String typeName;
 
   private Class<? super T> superclass;
diff --git a/user/test/com/google/gwt/http/HTTPSuite.java b/user/test/com/google/gwt/http/HTTPSuite.java
index b7659bc..e55d2e8 100644
--- a/user/test/com/google/gwt/http/HTTPSuite.java
+++ b/user/test/com/google/gwt/http/HTTPSuite.java
@@ -15,8 +15,6 @@
  */
 package com.google.gwt.http;
 
-import junit.framework.Test;
-
 import com.google.gwt.http.client.HTTPRequestTest;
 import com.google.gwt.http.client.RequestBuilderTest;
 import com.google.gwt.http.client.RequestTest;
@@ -24,6 +22,8 @@
 import com.google.gwt.http.client.URLTest;
 import com.google.gwt.junit.tools.GWTTestSuite;
 
+import junit.framework.Test;
+
 /**
  * TODO: document me.
  */
diff --git a/user/test/com/google/gwt/http/client/HTTPRequestTest.java b/user/test/com/google/gwt/http/client/HTTPRequestTest.java
index f689406..05cbe22 100644
--- a/user/test/com/google/gwt/http/client/HTTPRequestTest.java
+++ b/user/test/com/google/gwt/http/client/HTTPRequestTest.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2009 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.http.client;
 
 import com.google.gwt.core.client.GWT;
@@ -5,6 +20,11 @@
 import com.google.gwt.user.client.HTTPRequest;
 import com.google.gwt.user.client.ResponseTextHandler;
 
+/**
+ * Test cases for the {@link HTTPRequest} class.
+ * 
+ */
+@Deprecated
 public class HTTPRequestTest extends GWTTestCase {
 
   private static final int TEST_TIMEOUT = 10000;
diff --git a/user/test/com/google/gwt/http/server/RequestBuilderTestServlet.java b/user/test/com/google/gwt/http/server/RequestBuilderTestServlet.java
index 7adda6d..4ba06c8 100644
--- a/user/test/com/google/gwt/http/server/RequestBuilderTestServlet.java
+++ b/user/test/com/google/gwt/http/server/RequestBuilderTestServlet.java
@@ -15,6 +15,8 @@
  */
 package com.google.gwt.http.server;
 
+import com.google.gwt.http.client.RequestBuilderTest;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 
@@ -22,8 +24,6 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.google.gwt.http.client.RequestBuilderTest;
-
 /**
  * Servlet component of the
  * {@link com.google.gwt.http.client.RequestBuilderTest RequestBuilderTest}.
