Step towards eliminating com.google.gwt.user.client.Element

This commit changes all methods that used to take a user.Element to
instead take a dom.Element, while using Node.cast() to keep the return
values as user.Element and avoid breaking callers (who might try to
assign to a user.Element variable, for example).

During the next release cycle, it should be possible for users to
update their code the same way.  Then GWT can change its return values
to dom.Element, users can again do the same, and finally GWT can
eliminate user.Element altogether.

Change-Id: Id793420cae4f62c39b13b6bd1b21fd3487dcd81a
diff --git a/tools/api-checker/config/gwt25_26userApi.conf b/tools/api-checker/config/gwt25_26userApi.conf
index f8a1dec..318ea0e 100644
--- a/tools/api-checker/config/gwt25_26userApi.conf
+++ b/tools/api-checker/config/gwt25_26userApi.conf
@@ -196,3 +196,8 @@
 com.google.gwt.user.client.ui.TreeItem::TreeItem(Ljava/lang/String;) MISSING
 com.google.gwt.user.client.ui.TreeItem::addItem(Ljava/lang/String;) MISSING
 com.google.gwt.user.client.ui.TreeItem::insertItem(ILjava/lang/String;) MISSING
+
+# Remove old deprecated user.Element methods.
+com.google.gwt.user.client.ui.ComplexPanel::insert(Lcom/google/gwt/user/client/ui/Widget;Lcom/google/gwt/user/client/Element;I) MISSING
+com.google.gwt.user.client.ui.Panel::adopt(Lcom/google/gwt/user/client/ui/Widget;Lcom/google/gwt/user/client/Element;) MISSING
+com.google.gwt.user.client.ui.Panel::disown(Lcom/google/gwt/user/client/ui/Widget;) MISSING
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java b/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java
index 33fb349..a482ec1 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/WidgetInterpreter.java
@@ -88,8 +88,7 @@
     FieldWriter childFieldWriter = uiWriter.parseElementToField(elem);
     String elementPointer = idHolder + "Element";
     uiWriter.addInitStatement(
-        "com.google.gwt.user.client.Element %s = " +
-        "com.google.gwt.dom.client.Document.get().getElementById(%s).cast();",
+        "Element %s = com.google.gwt.dom.client.Document.get().getElementById(%s);",
         elementPointer, idHolder);
 
     if (uiWriter.useLazyWidgetBuilders()) {
diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java b/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
index 740d028..1b16ac8 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
@@ -449,8 +449,7 @@
    */
   private static class Impl {
 
-    private final com.google.gwt.user.client.Element tmpElem = Document.get().createDivElement()
-        .cast();
+    private final Element tmpElem = Document.get().createDivElement();
 
     /**
      * Convert the rowHtml into Elements wrapped by the specified table section.
diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java b/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java
index 0ea1b6d..12a5eb6 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractHasData.java
@@ -347,7 +347,7 @@
   /**
    * The temporary element use to convert HTML to DOM.
    */
-  private static com.google.gwt.user.client.Element tmpElem;
+  private static Element tmpElem;
 
   /**
    * Convenience method to convert the specified HTML into DOM elements and
@@ -357,8 +357,7 @@
    * @param tmpElem a temporary element
    * @return the parent element
    */
-  static Element convertToElements(Widget widget, com.google.gwt.user.client.Element tmpElem,
-      SafeHtml html) {
+  static Element convertToElements(Widget widget, Element tmpElem, SafeHtml html) {
     // Attach an event listener so we can catch synchronous load events from
     // cached images.
     DOM.setEventListener(tmpElem, widget);
@@ -432,9 +431,9 @@
   /**
    * Return the temporary element used to create elements.
    */
-  private static com.google.gwt.user.client.Element getTmpElem() {
+  private static Element getTmpElem() {
     if (tmpElem == null) {
-      tmpElem = Document.get().createDivElement().cast();
+      tmpElem = Document.get().createDivElement();
     }
     return tmpElem;
   }
@@ -1156,10 +1155,9 @@
   protected void setFocusable(Element elem, boolean focusable) {
     if (focusable) {
       FocusImpl focusImpl = FocusImpl.getFocusImplForWidget();
-      com.google.gwt.user.client.Element rowElem = elem.cast();
-      focusImpl.setTabIndex(rowElem, getTabIndex());
+      focusImpl.setTabIndex(elem, getTabIndex());
       if (accessKey != 0) {
-        focusImpl.setAccessKey(rowElem, accessKey);
+        focusImpl.setAccessKey(elem, accessKey);
       }
     } else {
       // Chrome: Elements remain focusable after removing the tabIndex, so set
diff --git a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplStandard.java b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplStandard.java
index 94f5bd1..cc13909 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplStandard.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplStandard.java
@@ -48,7 +48,7 @@
     if (!Element.is(eventTarget)) {
       return;
     }
-    com.google.gwt.user.client.Element target = eventTarget.cast();
+    Element target = eventTarget.cast();
 
     // Get the event listener, which is the first widget that handles the
     // specified event type.
diff --git a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
index 2b85cb8..0eed6c2 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
@@ -72,8 +72,8 @@
    * @param eventBits the event bits to sink
    * @param event the event to fire, or null not to fire an event
    */
-  private static void dispatchCellEvent(Widget widget,
-      com.google.gwt.user.client.Element target, int eventBits, Event event) {
+  private static void dispatchCellEvent(Widget widget, Element target,
+      int eventBits, Event event) {
     // Make sure that the target is still a child of the widget. We defer the
     // firing of some events, so its possible that the DOM structure has
     // changed before we fire the event.
@@ -129,13 +129,13 @@
     if (!Element.is(eventTarget)) {
       return;
     }
-    final com.google.gwt.user.client.Element target = eventTarget.cast();
+    final Element target = eventTarget.cast();
 
     // Get the event listener.
-    com.google.gwt.user.client.Element curElem = target;
+    Element curElem = target;
     EventListener listener = DOM.getEventListener(curElem);
     while (curElem != null && listener == null) {
-      curElem = curElem.getParentElement().cast();
+      curElem = curElem.getParentElement();
       listener = (curElem == null) ? null : DOM.getEventListener(curElem);
     }
 
@@ -208,7 +208,7 @@
       focusedInputValue = newValue;
 
       // Fire a synthetic event to the input element.
-      com.google.gwt.user.client.Element target = focusedInput.cast();
+      Element target = focusedInput;
       Event changeEvent = Document.get().createChangeEvent().cast();
       dispatchCellEvent(widget, target, Event.ONCHANGE, changeEvent);
     }
@@ -253,7 +253,7 @@
     if (BrowserEvents.FOCUS.equals(type) || BrowserEvents.BLUR.equals(type) || BrowserEvents.CHANGE.equals(type)) {
       EventTarget eventTarget = event.getEventTarget();
       if (Element.is(eventTarget)) {
-        com.google.gwt.user.client.Element target = eventTarget.cast();
+        Element target = eventTarget.cast();
         if (target != widget.getElement()) {
           DOM.setEventListener(target, null);
         }
diff --git a/user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java b/user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
index 503c7ba..5593599 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
@@ -696,7 +696,7 @@
   /**
    * The temporary element used to render child items.
    */
-  private static com.google.gwt.user.client.Element tmpElem;
+  private static Element tmpElem;
 
   /**
    * Returns the element that parents the cell contents of the node.
@@ -731,9 +731,9 @@
   /**
    * Return the temporary element used to create elements.
    */
-  private static com.google.gwt.user.client.Element getTmpElem() {
+  private static Element getTmpElem() {
     if (tmpElem == null) {
-      tmpElem = Document.get().createDivElement().cast();
+      tmpElem = Document.get().createDivElement();
     }
     return tmpElem;
   }
@@ -1295,14 +1295,13 @@
       cellParent.removeAttribute("accessKey");
     } else {
       FocusImpl focusImpl = FocusImpl.getFocusImplForWidget();
-      com.google.gwt.user.client.Element cellElem = cellParent.cast();
-      focusImpl.setTabIndex(cellElem, tree.getTabIndex());
+      focusImpl.setTabIndex(cellParent, tree.getTabIndex());
       char accessKey = tree.getAccessKey();
       if (accessKey != 0) {
-        focusImpl.setAccessKey(cellElem, accessKey);
+        focusImpl.setAccessKey(cellParent, accessKey);
       }
       if (stealFocus && !tree.cellIsEditing) {
-        cellElem.focus();
+        cellParent.focus();
       }
     }
 
diff --git a/user/src/com/google/gwt/user/client/DOM.java b/user/src/com/google/gwt/user/client/DOM.java
index 3b82114..db90071 100644
--- a/user/src/com/google/gwt/user/client/DOM.java
+++ b/user/src/com/google/gwt/user/client/DOM.java
@@ -17,6 +17,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.ImageElement;
 import com.google.gwt.dom.client.OptionElement;
 import com.google.gwt.dom.client.SelectElement;
@@ -104,7 +105,7 @@
    * @param elem the element to be cloned
    * @param deep should children be cloned as well?
    */
-  public static Element clone(Element elem, boolean deep) {
+  public static com.google.gwt.user.client.Element clone(Element elem, boolean deep) {
     return elem.cloneNode(deep).cast();
   }
 
@@ -127,7 +128,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createAnchor() {
+  public static com.google.gwt.user.client.Element createAnchor() {
     return Document.get().createAnchorElement().cast();
   }
 
@@ -137,7 +138,7 @@
    * @return the newly-created element
    */
   @SuppressWarnings("deprecation")
-  public static Element createButton() {
+  public static com.google.gwt.user.client.Element createButton() {
     return Document.get().createButtonElement().cast();
   }
 
@@ -146,7 +147,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createCaption() {
+  public static com.google.gwt.user.client.Element createCaption() {
     return Document.get().createCaptionElement().cast();
   }
 
@@ -155,7 +156,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createCol() {
+  public static com.google.gwt.user.client.Element createCol() {
     return Document.get().createColElement().cast();
   }
 
@@ -164,7 +165,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createColGroup() {
+  public static com.google.gwt.user.client.Element createColGroup() {
     return Document.get().createColGroupElement().cast();
   }
 
@@ -173,7 +174,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createDiv() {
+  public static com.google.gwt.user.client.Element createDiv() {
     return Document.get().createDivElement().cast();
   }
 
@@ -183,7 +184,7 @@
    * @param tagName the HTML tag of the element to be created
    * @return the newly-created element
    */
-  public static Element createElement(String tagName) {
+  public static com.google.gwt.user.client.Element createElement(String tagName) {
     return Document.get().createElement(tagName).cast();
   }
 
@@ -192,7 +193,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createFieldSet() {
+  public static com.google.gwt.user.client.Element createFieldSet() {
     return Document.get().createFieldSetElement().cast();
   }
 
@@ -201,7 +202,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createForm() {
+  public static com.google.gwt.user.client.Element createForm() {
     return Document.get().createFormElement().cast();
   }
 
@@ -210,7 +211,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createIFrame() {
+  public static com.google.gwt.user.client.Element createIFrame() {
     return Document.get().createIFrameElement().cast();
   }
 
@@ -219,7 +220,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createImg() {
+  public static com.google.gwt.user.client.Element createImg() {
     return Document.get().createImageElement().cast();
   }
 
@@ -228,7 +229,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createInputCheck() {
+  public static com.google.gwt.user.client.Element createInputCheck() {
     return Document.get().createCheckInputElement().cast();
   }
 
@@ -237,7 +238,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createInputPassword() {
+  public static com.google.gwt.user.client.Element createInputPassword() {
     return Document.get().createPasswordInputElement().cast();
   }
 
@@ -248,7 +249,7 @@
    *          associated
    * @return the newly-created element
    */
-  public static Element createInputRadio(String name) {
+  public static com.google.gwt.user.client.Element createInputRadio(String name) {
     return Document.get().createRadioInputElement(name).cast();
   }
 
@@ -257,7 +258,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createInputText() {
+  public static com.google.gwt.user.client.Element createInputText() {
     return Document.get().createTextInputElement().cast();
   }
 
@@ -266,7 +267,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createLabel() {
+  public static com.google.gwt.user.client.Element createLabel() {
     return Document.get().createLabelElement().cast();
   }
 
@@ -275,7 +276,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createLegend() {
+  public static com.google.gwt.user.client.Element createLegend() {
     return Document.get().createLegendElement().cast();
   }
 
@@ -284,7 +285,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createOption() {
+  public static com.google.gwt.user.client.Element createOption() {
     return Document.get().createOptionElement().cast();
   }
 
@@ -296,7 +297,7 @@
    *             instead
    */
   @Deprecated
-  public static Element createOptions() {
+  public static com.google.gwt.user.client.Element createOptions() {
     return Document.get().createElement("options").cast();
   }
 
@@ -309,7 +310,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createSelect() {
+  public static com.google.gwt.user.client.Element createSelect() {
     return Document.get().createSelectElement().cast();
   }
 
@@ -319,7 +320,7 @@
    * @param multiple true if multiple selection of options is allowed
    * @return the newly-created element
    */
-  public static Element createSelect(boolean multiple) {
+  public static com.google.gwt.user.client.Element createSelect(boolean multiple) {
     return Document.get().createSelectElement(multiple).cast();
   }
 
@@ -328,7 +329,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createSpan() {
+  public static com.google.gwt.user.client.Element createSpan() {
     return Document.get().createSpanElement().cast();
   }
 
@@ -337,7 +338,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTable() {
+  public static com.google.gwt.user.client.Element createTable() {
     return Document.get().createTableElement().cast();
   }
 
@@ -346,7 +347,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTBody() {
+  public static com.google.gwt.user.client.Element createTBody() {
     return Document.get().createTBodyElement().cast();
   }
 
@@ -355,7 +356,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTD() {
+  public static com.google.gwt.user.client.Element createTD() {
     return Document.get().createTDElement().cast();
   }
 
@@ -364,7 +365,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTextArea() {
+  public static com.google.gwt.user.client.Element createTextArea() {
     return Document.get().createTextAreaElement().cast();
   }
 
@@ -373,7 +374,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTFoot() {
+  public static com.google.gwt.user.client.Element createTFoot() {
     return Document.get().createTFootElement().cast();
   }
 
@@ -382,7 +383,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTH() {
+  public static com.google.gwt.user.client.Element createTH() {
     return Document.get().createTHElement().cast();
   }
 
@@ -391,7 +392,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTHead() {
+  public static com.google.gwt.user.client.Element createTHead() {
     return Document.get().createTHeadElement().cast();
   }
 
@@ -400,7 +401,7 @@
    * 
    * @return the newly-created element
    */
-  public static Element createTR() {
+  public static com.google.gwt.user.client.Element createTR() {
     return Document.get().createTRElement().cast();
   }
 
@@ -504,7 +505,7 @@
    * @return the event's current target element
    * @see DOM#eventGetTarget(Event)
    */
-  public static Element eventGetCurrentTarget(Event evt) {
+  public static com.google.gwt.user.client.Element eventGetCurrentTarget(Event evt) {
     return evt.getCurrentEventTarget().cast();
   }
 
@@ -515,8 +516,8 @@
    * @param evt the event to be tested
    * @return the element from which the mouse pointer was moved
    */
-  public static Element eventGetFromElement(Event evt) {
-    return impl.eventGetFromElement(evt);
+  public static com.google.gwt.user.client.Element eventGetFromElement(Event evt) {
+    return impl.eventGetFromElement(evt).cast();
   }
 
   /**
@@ -625,7 +626,7 @@
    * @param evt the event to be tested
    * @return the target element
    */
-  public static Element eventGetTarget(Event evt) {
+  public static com.google.gwt.user.client.Element eventGetTarget(Event evt) {
     return evt.getEventTarget().cast();
   }
 
@@ -636,8 +637,8 @@
    * @param evt the event to be tested
    * @return the element to which the mouse pointer was moved
    */
-  public static Element eventGetToElement(Event evt) {
-    return impl.eventGetToElement(evt);
+  public static com.google.gwt.user.client.Element eventGetToElement(Event evt) {
+    return impl.eventGetToElement(evt).cast();
   }
 
   /**
@@ -759,8 +760,8 @@
    * @return a handle to the capture element, or <code>null</code> if none
    *         exists
    */
-  public static Element getCaptureElement() {
-    return sCaptureElem;
+  public static com.google.gwt.user.client.Element getCaptureElement() {
+    return sCaptureElem.cast();
   }
 
   /**
@@ -770,8 +771,8 @@
    * @param index the index of the child element
    * @return the n-th child element
    */
-  public static Element getChild(Element parent, int index) {
-    return impl.getChild(parent, index);
+  public static com.google.gwt.user.client.Element getChild(Element parent, int index) {
+    return impl.getChild(parent, index).cast();
   }
 
   /**
@@ -816,7 +817,7 @@
    * @param id the id whose associated element is to be retrieved
    * @return the associated element, or <code>null</code> if none is found
    */
-  public static Element getElementById(String id) {
+  public static com.google.gwt.user.client.Element getElementById(String id) {
     return Document.get().getElementById(id).cast();
   }
 
@@ -887,7 +888,7 @@
    * @param elem the element whose child is to be retrieved
    * @return the child element
    */
-  public static Element getFirstChild(Element elem) {
+  public static com.google.gwt.user.client.Element getFirstChild(Element elem) {
     return elem.getFirstChildElement().cast();
   }
 
@@ -959,7 +960,7 @@
    * @param elem the element whose sibling is to be retrieved
    * @return the sibling element
    */
-  public static Element getNextSibling(Element elem) {
+  public static com.google.gwt.user.client.Element getNextSibling(Element elem) {
     return elem.getNextSibling().cast();
   }
 
@@ -969,7 +970,7 @@
    * @param elem the element whose parent is to be retrieved
    * @return the parent element
    */
-  public static Element getParent(Element elem) {
+  public static com.google.gwt.user.client.Element getParent(Element elem) {
     return elem.getParentElement().cast();
   }
 
diff --git a/user/src/com/google/gwt/user/client/Element.java b/user/src/com/google/gwt/user/client/Element.java
index a8b8ca0..de9b439 100644
--- a/user/src/com/google/gwt/user/client/Element.java
+++ b/user/src/com/google/gwt/user/client/Element.java
@@ -23,7 +23,14 @@
  * created from, and can be accessed in JavaScript code as expected. This is
  * typically done by calling methods in the
  * {@link com.google.gwt.user.client.DOM} class.
+ *
+ * As of GWT 2.6, users should use {@link com.google.gwt.dom.client.Element}
+ * instead.  As an exception, some methods still return a <code>Element</code>
+ * object for backwards compatibility (though this will change in a future
+ * release), so overriding them will require returning an <code>Element</code>
+ * object too.
  */
+@Deprecated
 public class Element extends com.google.gwt.dom.client.Element {
 
   /**
diff --git a/user/src/com/google/gwt/user/client/Event.java b/user/src/com/google/gwt/user/client/Event.java
index f1e646e..04bce5b 100644
--- a/user/src/com/google/gwt/user/client/Event.java
+++ b/user/src/com/google/gwt/user/client/Event.java
@@ -509,7 +509,7 @@
   public static EventListener getEventListener(Element elem) {
     // This cast is always valid because both Element types are JSOs and have
     // no new fields are added in the subclass.
-    return DOM.getEventListener((com.google.gwt.user.client.Element) elem);
+    return DOM.getEventListener(elem);
   }
 
   /**
@@ -522,7 +522,7 @@
   public static int getEventsSunk(Element elem) {
     // This cast is always valid because both Element types are JSOs and have
     // no new fields are added in the subclass.
-    return DOM.getEventsSunk((com.google.gwt.user.client.Element) elem);
+    return DOM.getEventsSunk(elem);
   }
 
   /**
@@ -543,7 +543,7 @@
    * @see #setCapture(Element)
    */
   public static void releaseCapture(Element elem) {
-    DOM.releaseCapture(elem.<com.google.gwt.user.client.Element> cast());
+    DOM.releaseCapture(elem);
   }
 
   /**
@@ -566,7 +566,7 @@
    * @param elem the element on which to set mouse capture
    */
   public static void setCapture(Element elem) {
-    DOM.setCapture(elem.<com.google.gwt.user.client.Element> cast());
+    DOM.setCapture(elem);
   }
 
   /**
@@ -579,7 +579,7 @@
   public static void setEventListener(Element elem, EventListener listener) {
     // This cast is always valid because both Element types are JSOs and have
     // no new fields are added in the subclass.
-    DOM.setEventListener((com.google.gwt.user.client.Element) elem, listener);
+    DOM.setEventListener(elem, listener);
   }
 
   /**
@@ -594,7 +594,7 @@
   public static void sinkEvents(Element elem, int eventBits) {
     // This cast is always valid because both Element types are JSOs and have
     // no new fields are added in the subclass.
-    DOM.sinkEvents((com.google.gwt.user.client.Element) elem, eventBits);
+    DOM.sinkEvents(elem, eventBits);
   }
 
   /**
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImpl.java b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
index a0064c2..f3c36b3 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImpl.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
@@ -20,8 +20,8 @@
 import com.google.gwt.core.client.impl.Disposable;
 import com.google.gwt.core.client.impl.Impl;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NodeList;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.EventListener;
 
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplIE9.java b/user/src/com/google/gwt/user/client/impl/DOMImplIE9.java
index 058e4e7..716c7f7 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplIE9.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplIE9.java
@@ -16,7 +16,7 @@
 package com.google.gwt.user.client.impl;
 
 import com.google.gwt.dom.client.BrowserEvents;
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * IE9 implementation of {@link com.google.gwt.user.client.impl.DOMImplStandardBase}.
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java b/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
index 4c7b609..cb76d68 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplMozilla.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Mozilla implementation of StandardBrowser.
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java b/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java
index 5b02b1c..a55b632 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplOpera.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Opera implementation of {@link com.google.gwt.user.client.impl.DOMImpl}.
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java b/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
index 3a5f893..6bd383e 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplStandard.java
@@ -17,8 +17,8 @@
 
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.dom.client.BrowserEvents;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 
 /**
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImplTrident.java b/user/src/com/google/gwt/user/client/impl/DOMImplTrident.java
index c4797e3..7a058b0 100644
--- a/user/src/com/google/gwt/user/client/impl/DOMImplTrident.java
+++ b/user/src/com/google/gwt/user/client/impl/DOMImplTrident.java
@@ -16,7 +16,7 @@
 package com.google.gwt.user.client.impl;
 
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.Event;
 
 /**
@@ -130,7 +130,7 @@
       }
 
       if (listener) {
-        @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;Lcom/google/gwt/user/client/EventListener;)($wnd.event, curElem, listener);
+        @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;Lcom/google/gwt/user/client/EventListener;)($wnd.event, curElem, listener);
       }
 
       @com.google.gwt.dom.client.DOMImplTrident::currentEventTarget = oldEventTarget;
diff --git a/user/src/com/google/gwt/user/client/impl/DocumentRootImpl.java b/user/src/com/google/gwt/user/client/impl/DocumentRootImpl.java
index 609f352..69193d6 100644
--- a/user/src/com/google/gwt/user/client/impl/DocumentRootImpl.java
+++ b/user/src/com/google/gwt/user/client/impl/DocumentRootImpl.java
@@ -17,7 +17,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Document;
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Native implementation used by {@link WindowImpl} and {@link DOMImpl} to
diff --git a/user/src/com/google/gwt/user/client/impl/ElementMapperImpl.java b/user/src/com/google/gwt/user/client/impl/ElementMapperImpl.java
index c5163ad..f0fba8e 100644
--- a/user/src/com/google/gwt/user/client/impl/ElementMapperImpl.java
+++ b/user/src/com/google/gwt/user/client/impl/ElementMapperImpl.java
@@ -16,7 +16,7 @@
 
 package com.google.gwt.user.client.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.ui.UIObject;
 
 import java.util.ArrayList;
diff --git a/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java b/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java
index 8ad57be..6c6db0b 100644
--- a/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java
+++ b/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java
@@ -16,8 +16,8 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * An absolute panel positions all of its children absolutely, allowing them to
diff --git a/user/src/com/google/gwt/user/client/ui/Accessibility.java b/user/src/com/google/gwt/user/client/ui/Accessibility.java
index 7bd19b5..79bf4d6 100644
--- a/user/src/com/google/gwt/user/client/ui/Accessibility.java
+++ b/user/src/com/google/gwt/user/client/ui/Accessibility.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * <p>Allows ARIA attributes to be added to widgets so that they can be
@@ -121,4 +121,4 @@
 
   private Accessibility() {
   }
-}
\ No newline at end of file
+}
diff --git a/user/src/com/google/gwt/user/client/ui/CellPanel.java b/user/src/com/google/gwt/user/client/ui/CellPanel.java
index f4b87f6..572eac1 100644
--- a/user/src/com/google/gwt/user/client/ui/CellPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/CellPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant;
 import com.google.gwt.user.client.ui.HasVerticalAlignment.VerticalAlignmentConstant;
 
@@ -201,21 +201,43 @@
     table.setPropertyInt("cellSpacing", spacing);
   }
 
-  protected Element getBody() {
-    return body;
+  protected com.google.gwt.user.client.Element getBody() {
+    return body.cast();
   }
 
-  protected Element getTable() {
-    return table;
+  protected com.google.gwt.user.client.Element getTable() {
+    return table.cast();
   }
 
+  @SuppressWarnings("deprecation")
   protected void setCellHorizontalAlignment(Element td,
       HorizontalAlignmentConstant align) {
+    setCellHorizontalAlignment(td.<com.google.gwt.user.client.Element>cast(), align);
+  }
+
+  /**
+   * @deprecated Call and override {@link #setCellHorizontalAlignment(Element,
+   *             HorizontalAlignmentConstant)} instead.
+   */
+  @Deprecated
+  protected void setCellHorizontalAlignment(com.google.gwt.user.client.Element td,
+      HorizontalAlignmentConstant align) {
     td.setPropertyString("align", align.getTextAlignString());
   }
 
+  @SuppressWarnings("deprecation")
   protected void setCellVerticalAlignment(Element td,
       VerticalAlignmentConstant align) {
+    setCellVerticalAlignment(td.<com.google.gwt.user.client.Element>cast(), align);
+  }
+
+  /**
+   * @deprecated Call and override {@link #setCellVerticalAlignment(Element,
+   *             VerticalAlignmentConstant)} instead.
+   */
+  @Deprecated
+  protected void setCellVerticalAlignment(com.google.gwt.user.client.Element td,
+      VerticalAlignmentConstant align) {
     td.getStyle().setProperty("verticalAlign", align.getVerticalAlignString());
   }
 
diff --git a/user/src/com/google/gwt/user/client/ui/CheckBox.java b/user/src/com/google/gwt/user/client/ui/CheckBox.java
index af70ae0..a4644be 100644
--- a/user/src/com/google/gwt/user/client/ui/CheckBox.java
+++ b/user/src/com/google/gwt/user/client/ui/CheckBox.java
@@ -16,6 +16,7 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.InputElement;
 import com.google.gwt.dom.client.LabelElement;
 import com.google.gwt.dom.client.Style.WhiteSpace;
@@ -32,9 +33,7 @@
 import com.google.gwt.i18n.shared.HasDirectionEstimator;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.EventListener;
 
 /**
  * A standard check box widget.
@@ -506,7 +505,7 @@
    */
   @Override
   protected void onLoad() {
-    setEventListener(inputElem, this);
+    DOM.setEventListener(inputElem, this);
   }
 
   /**
@@ -518,7 +517,7 @@
   protected void onUnload() {
     // Clear out the inputElem's event listener (breaking the circular
     // reference between it and the widget).
-    setEventListener(asOld(inputElem), null);
+    DOM.setEventListener(inputElem, null);
     setValue(getValue());
   }
 
@@ -530,6 +529,14 @@
    * @param elem the new input element
    */
   protected void replaceInputElement(Element elem) {
+    replaceInputElement(elem.<com.google.gwt.user.client.Element>cast());
+  }
+
+  /**
+   * @deprecated Call and use {@link replaceInputElement(Element)} instead.
+   */
+  @Deprecated
+  protected void replaceInputElement(com.google.gwt.user.client.Element elem) {
     InputElement newInputElem = InputElement.as(elem);
     // Collect information we need to set
     int tabIndex = getTabIndex();
@@ -541,7 +548,7 @@
     int sunkEvents = Event.getEventsSunk(inputElem);
 
     // Clear out the old input element
-    setEventListener(asOld(inputElem), null);
+    DOM.setEventListener(inputElem, null);
 
     getElement().replaceChild(newInputElem, inputElem);
 
@@ -563,17 +570,7 @@
 
     // Set the event listener
     if (isAttached()) {
-      setEventListener(asOld(inputElem), this);
+      DOM.setEventListener(inputElem, this);
     }
   }
-
-  private Element asOld(com.google.gwt.dom.client.Element elem) {
-    Element oldSchool = elem.cast();
-    return oldSchool;
-  }
-
-  private void setEventListener(com.google.gwt.dom.client.Element e,
-      EventListener listener) {
-    DOM.setEventListener(asOld(e), listener);
-  }
 }
diff --git a/user/src/com/google/gwt/user/client/ui/ComplexPanel.java b/user/src/com/google/gwt/user/client/ui/ComplexPanel.java
index 6b692f9..ccca704 100644
--- a/user/src/com/google/gwt/user/client/ui/ComplexPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/ComplexPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 import java.util.Iterator;
 
@@ -84,6 +84,14 @@
    * @param container the element within which the child will be contained
    */
   protected void add(Widget child, Element container) {
+    add(child, container.<com.google.gwt.user.client.Element>cast());
+  }
+
+  /**
+   * @deprecated Call and override {@link #add(Widget, Element)} instead.
+   */
+  @Deprecated
+  protected void add(Widget child, com.google.gwt.user.client.Element container) {
     // Detach new child.
     child.removeFromParent();
 
@@ -155,24 +163,6 @@
   }
 
   /**
-   * This method was used by subclasses to insert a new child Widget. It is now
-   * deprecated because it was ambiguous whether the <code>child</code> should
-   * be appended to <code>container</code> element versus inserted into
-   * <code>container</code> at <code>beforeIndex</code>. Use
-   * {@link #insert(Widget, Element, int, boolean)}, which clarifies this
-   * ambiguity.
-   * 
-   * @deprecated Use {@link #insert(Widget, Element, int, boolean)} instead
-   */
-  @Deprecated
-  protected void insert(Widget child, Element container, int beforeIndex) {
-    if (container == null) {
-      throw new NullPointerException("container may not be null");
-    }
-    insert(child, container, beforeIndex, false);
-  }
-
-  /**
    * Insert a new child Widget into this Panel at a specified index, attaching
    * its Element to the specified container Element. The child Element will
    * either be attached to the container at the same index, or simply appended
@@ -189,6 +179,16 @@
    */
   protected void insert(Widget child, Element container, int beforeIndex,
       boolean domInsert) {
+    insert(child, container.<com.google.gwt.user.client.Element>cast(), beforeIndex,
+        domInsert);
+  }
+
+  /**
+   * @deprecated Call and override {@link insert(Widget, Element, int, boolean)} instead.
+   */
+  @Deprecated
+  protected void insert(Widget child, com.google.gwt.user.client.Element container,
+      int beforeIndex, boolean domInsert) {
     // Validate index; adjust if the widget is already a child of this panel.
     beforeIndex = adjustIndex(child, beforeIndex);
 
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 d15d41e..a18e6ad 100644
--- a/user/src/com/google/gwt/user/client/ui/CustomButton.java
+++ b/user/src/com/google/gwt/user/client/ui/CustomButton.java
@@ -19,13 +19,13 @@
 import com.google.gwt.aria.client.PressedValue;
 import com.google.gwt.aria.client.Roles;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.safehtml.client.HasSafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 
 /**
diff --git a/user/src/com/google/gwt/user/client/ui/DeckPanel.java b/user/src/com/google/gwt/user/client/ui/DeckPanel.java
index 608ab9d..c285918 100644
--- a/user/src/com/google/gwt/user/client/ui/DeckPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DeckPanel.java
@@ -16,8 +16,8 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.animation.client.Animation;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * A panel that displays all of its child widgets in a 'deck', where only one
diff --git a/user/src/com/google/gwt/user/client/ui/DecoratedPopupPanel.java b/user/src/com/google/gwt/user/client/ui/DecoratedPopupPanel.java
index 275daa5..b98584d 100644
--- a/user/src/com/google/gwt/user/client/ui/DecoratedPopupPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DecoratedPopupPanel.java
@@ -15,8 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.user.client.Element;
-
 import java.util.Iterator;
 
 /**
@@ -186,7 +184,7 @@
    * @param cell the cell index
    * @return the Element at the given row and cell
    */
-  protected Element getCellElement(int row, int cell) {
-    return decPanel.getCellElement(row, cell);
+  protected com.google.gwt.user.client.Element getCellElement(int row, int cell) {
+    return decPanel.getCellElement(row, cell).cast();
   }
 }
diff --git a/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java b/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java
index 4d00ca4..608d0c5 100644
--- a/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * <p>
diff --git a/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java b/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java
index d40b5b5..4d9b661 100644
--- a/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.i18n.client.LocaleInfo;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * <p>
@@ -189,14 +189,14 @@
    * @param cell the cell index
    * @return the Element at the given row and cell
    */
-  protected Element getCellElement(int row, int cell) {
+  protected com.google.gwt.user.client.Element getCellElement(int row, int cell) {
     Element tr = DOM.getChild(tbody, row);
     Element td = DOM.getChild(tr, cell);
-    return DOM.getFirstChild(td);
+    return DOM.getFirstChild(td).cast();
   }
 
   @Override
-  protected Element getContainerElement() {
-    return containerElem;
+  protected com.google.gwt.user.client.Element getContainerElement() {
+    return containerElem.cast();
   }
 }
diff --git a/user/src/com/google/gwt/user/client/ui/DialogBox.java b/user/src/com/google/gwt/user/client/ui/DialogBox.java
index 19dd02d..f624326 100644
--- a/user/src/com/google/gwt/user/client/ui/DialogBox.java
+++ b/user/src/com/google/gwt/user/client/ui/DialogBox.java
@@ -16,6 +16,7 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.HasAllMouseHandlers;
@@ -36,7 +37,6 @@
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Event.NativePreviewEvent;
 import com.google.gwt.user.client.Window;
diff --git a/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java b/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java
index 80ae551..ebdc61c 100644
--- a/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java
@@ -17,6 +17,7 @@
 
 import com.google.gwt.animation.client.Animation;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.logical.shared.CloseEvent;
 import com.google.gwt.event.logical.shared.CloseHandler;
 import com.google.gwt.event.logical.shared.HasCloseHandlers;
@@ -28,7 +29,6 @@
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.resources.client.ImageResource.ImageOptions;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 
 import java.util.Iterator;
diff --git a/user/src/com/google/gwt/user/client/ui/DockPanel.java b/user/src/com/google/gwt/user/client/ui/DockPanel.java
index 969c12f..68aec4d 100644
--- a/user/src/com/google/gwt/user/client/ui/DockPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/DockPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.i18n.client.LocaleInfo;
 
 import java.util.HashMap;
diff --git a/user/src/com/google/gwt/user/client/ui/Grid.java b/user/src/com/google/gwt/user/client/ui/Grid.java
index ced5ef4..355ffa3 100644
--- a/user/src/com/google/gwt/user/client/ui/Grid.java
+++ b/user/src/com/google/gwt/user/client/ui/Grid.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * A rectangular grid that can contain text, html, or a child
@@ -265,13 +265,13 @@
    * Creates a new, empty cell.
    */
   @Override
-  protected Element createCell() {
+  protected com.google.gwt.user.client.Element createCell() {
     Element td = super.createCell();
 
     // Add a non-breaking space to the TD. This ensures that the cell is
     // displayed.
     td.setInnerHTML("&nbsp;");
-    return td;
+    return td.cast();
   }
 
   /**
diff --git a/user/src/com/google/gwt/user/client/ui/HTMLPanel.java b/user/src/com/google/gwt/user/client/ui/HTMLPanel.java
index 8146a61..995a16b 100644
--- a/user/src/com/google/gwt/user/client/ui/HTMLPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/HTMLPanel.java
@@ -167,27 +167,13 @@
   }
 
   /**
-   * Adds a child widget to the panel, contained within an HTML
-   * element.  It is up to the caller to ensure that the given element
-   * is a child of this panel's root element.
-   *
-   * @param widget the widget to be added
-   * @param elem the element within which it will be contained
-   */
-  public void add(Widget widget, Element elem) {
-    com.google.gwt.user.client.Element clientElem = elem.cast();
-    super.add(widget, clientElem);
-  }
-
-  /**
    * Adds a child widget to the panel, replacing the HTML element.
    *
    * @param widget the widget to be added
    * @param toReplace the element to be replaced by the widget
    */
   public final void addAndReplaceElement(Widget widget, Element toReplace) {
-    com.google.gwt.user.client.Element clientElem = toReplace.cast();
-    addAndReplaceElement(widget, clientElem);
+    addAndReplaceElement(widget, toReplace.<com.google.gwt.user.client.Element>cast());
   }
 
   /**
diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java
index f35ea80..b418aaa 100644
--- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java
+++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java
@@ -18,6 +18,7 @@
 import com.google.gwt.core.client.JsArray;
 import com.google.gwt.core.shared.GWT;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.TableCellElement;
 import com.google.gwt.dom.client.TableRowElement;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -44,7 +45,6 @@
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.impl.ElementMapperImpl;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant;
@@ -70,9 +70,9 @@
    * Interface to access {@link HTMLTable}'s DOM.
    */
   private interface HTMLTableImpl {
-    JsArray<com.google.gwt.dom.client.Element> getRows(com.google.gwt.dom.client.Element tbody);
+    JsArray<Element> getRows(Element tbody);
 
-    JsArray<com.google.gwt.dom.client.Element> getCells(com.google.gwt.dom.client.Element row);
+    JsArray<Element> getCells(Element row);
   }
 
   /**
@@ -82,14 +82,12 @@
   private static class HTMLTableStandardImpl implements HTMLTableImpl {
 
     @Override
-    public native JsArray<com.google.gwt.dom.client.Element> getRows(
-        com.google.gwt.dom.client.Element tbody) /*-{
+    public native JsArray<Element> getRows(Element tbody) /*-{
       return tbody.rows;
     }-*/;
 
     @Override
-    public native JsArray<com.google.gwt.dom.client.Element> getCells(
-        com.google.gwt.dom.client.Element row) /*-{
+    public native JsArray<Element> getCells(Element row) /*-{
       return row.cells;
     }-*/;
   }
@@ -102,14 +100,12 @@
   private static class HTMLTableIEImpl implements HTMLTableImpl {
 
     @Override
-    public native JsArray<com.google.gwt.dom.client.Element> getRows(
-        com.google.gwt.dom.client.Element tbody) /*-{
+    public native JsArray<Element> getRows(Element tbody) /*-{
       return tbody.children;
     }-*/;
 
     @Override
-    public native JsArray<com.google.gwt.dom.client.Element> getCells(
-        com.google.gwt.dom.client.Element row) /*-{
+    public native JsArray<Element> getCells(Element row) /*-{
       return row.children;
     }-*/;
   }
@@ -146,8 +142,8 @@
      * 
      * @return the cell's element.
      */
-    public Element getElement() {
-      return getCellFormatter().getElement(rowIndex, cellIndex);
+    public com.google.gwt.user.client.Element getElement() {
+      return getCellFormatter().getElement(rowIndex, cellIndex).cast();
     }
 
     /**
@@ -185,9 +181,9 @@
      * @return the column's TD element
      * @throws IndexOutOfBoundsException
      */
-    public Element getElement(int row, int column) {
+    public com.google.gwt.user.client.Element getElement(int row, int column) {
       checkCellBounds(row, column);
-      return getCellElement(bodyElem, row, column);
+      return getCellElement(bodyElem, row, column).cast();
     }
 
     /**
@@ -387,9 +383,9 @@
      * @return the cell's element
      * @throws IndexOutOfBoundsException
      */
-    protected Element ensureElement(int row, int column) {
+    protected com.google.gwt.user.client.Element ensureElement(int row, int column) {
       prepareCell(row, column);
-      return getCellElement(bodyElem, row, column);
+      return getCellElement(bodyElem, row, column).cast();
     }
 
     /**
@@ -429,7 +425,7 @@
      * @return the element
      */
     private Element getCellElement(Element tbody, int row, int col) {
-      return impl.getCells(impl.getRows(tbody).get(row)).get(col).cast();
+      return impl.getCells(impl.getRows(tbody).get(row)).get(col);
     }
 
     /**
@@ -471,8 +467,8 @@
      * @param column the column index
      * @return the col element
      */
-    public Element getElement(int column) {
-      return ensureColumn(column);
+    public com.google.gwt.user.client.Element getElement(int column) {
+      return ensureColumn(column).cast();
     }
 
     /**
@@ -615,9 +611,9 @@
      * @return the row's TR element
      * @throws IndexOutOfBoundsException
      */
-    public Element getElement(int row) {
+    public com.google.gwt.user.client.Element getElement(int row) {
       checkRowBounds(row);
-      return getRow(bodyElem, row);
+      return getRow(bodyElem, row).cast();
     }
 
     /**
@@ -724,12 +720,22 @@
      * @return the row's TR element
      * @throws IndexOutOfBoundsException
      */
-    protected Element ensureElement(int row) {
+    protected com.google.gwt.user.client.Element ensureElement(int row) {
       prepareRow(row);
-      return getRow(bodyElem, row);
+      return getRow(bodyElem, row).cast();
     }
 
-    protected Element getRow(Element tbody, int row) {
+    @SuppressWarnings("deprecation")
+    protected com.google.gwt.user.client.Element getRow(Element tbody, int row) {
+      return getRow(tbody.<com.google.gwt.user.client.Element>cast(), row);
+    }
+
+    /**
+     * @deprecated Call and override {@link #getRow(Element, int)} instead.
+     */
+    @Deprecated
+    protected com.google.gwt.user.client.Element getRow(
+        com.google.gwt.user.client.Element tbody, int row) {
       return impl.getRows(tbody).get(row).cast();
     }
 
@@ -1257,8 +1263,8 @@
    * 
    * @return the newly created TD
    */
-  protected Element createCell() {
-    return DOM.createTD();
+  protected com.google.gwt.user.client.Element createCell() {
+    return DOM.createTD().cast();
   }
 
   /**
@@ -1266,8 +1272,8 @@
    * 
    * @return the TBODY element
    */
-  protected Element getBodyElement() {
-    return bodyElem;
+  protected com.google.gwt.user.client.Element getBodyElement() {
+    return bodyElem.cast();
   }
 
   /**
@@ -1277,8 +1283,17 @@
    * @param row the row
    * @return number of columns in the row
    */
+  @SuppressWarnings("deprecation")
   protected int getDOMCellCount(Element tableBody, int row) {
-    com.google.gwt.dom.client.Element rowElement = impl.getRows(tableBody).get(row);
+    return getDOMCellCount(tableBody.<com.google.gwt.user.client.Element>cast(), row);
+  }
+
+  /**
+   * @deprecated Call and override {@link #getDOMCellCount(Element, int)} instead.
+   */
+  @Deprecated
+  protected int getDOMCellCount(com.google.gwt.user.client.Element tableBody, int row) {
+    Element rowElement = impl.getRows(tableBody).get(row);
     return impl.getCells(rowElement).length();
   }
 
@@ -1301,7 +1316,16 @@
     return getDOMRowCount(bodyElem);
   }
 
+  @SuppressWarnings("deprecation")
   protected int getDOMRowCount(Element tbody) {
+    return getDOMRowCount(tbody.<com.google.gwt.user.client.Element>cast());
+  }
+
+  /**
+   * @deprecated Call and override {@link #getDOMRowCount(Element)} instead.
+   */
+  @Deprecated
+  protected int getDOMRowCount(com.google.gwt.user.client.Element tbody) {
     return impl.getRows(tbody).length();
   }
 
@@ -1312,7 +1336,7 @@
    * @return the TD associated with the event, or <code>null</code> if none is
    *         found.
    */
-  protected Element getEventTargetCell(Event event) {
+  protected com.google.gwt.user.client.Element getEventTargetCell(Event event) {
     Element td = DOM.eventGetTarget(event);
     for (; td != null; td = DOM.getParent(td)) {
       // If it's a TD, it might be the one we're looking for.
@@ -1322,7 +1346,7 @@
         Element tr = DOM.getParent(td);
         Element body = DOM.getParent(tr);
         if (body == bodyElem) {
-          return td;
+          return td.cast();
         }
       }
       // If we run into this table's body, we're out of options.
@@ -1388,7 +1412,17 @@
    * @param clearInnerHTML should the cell's inner html be cleared?
    * @return returns whether a widget was cleared
    */
+  @SuppressWarnings("deprecation")
   protected boolean internalClearCell(Element td, boolean clearInnerHTML) {
+    return internalClearCell(td.<com.google.gwt.user.client.Element>cast(), clearInnerHTML);
+  }
+
+  /**
+   * @deprecated Call and override {@link internalClearCell(Element, boolean)} instead.
+   */
+  @Deprecated
+  protected boolean internalClearCell(com.google.gwt.user.client.Element td,
+      boolean clearInnerHTML) {
     Element maybeChild = DOM.getFirstChild(td);
     Widget widget = null;
     if (maybeChild != null) {
diff --git a/user/src/com/google/gwt/user/client/ui/HeaderPanel.java b/user/src/com/google/gwt/user/client/ui/HeaderPanel.java
index 3ea4b14..1a268d3 100644
--- a/user/src/com/google/gwt/user/client/ui/HeaderPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/HeaderPanel.java
@@ -19,11 +19,11 @@
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Display;
 import com.google.gwt.dom.client.Style.Overflow;
 import com.google.gwt.dom.client.Style.Position;
 import com.google.gwt.dom.client.Style.Unit;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.FiniteWidgetIterator.WidgetProvider;
 
 import java.util.Iterator;
diff --git a/user/src/com/google/gwt/user/client/ui/HorizontalPanel.java b/user/src/com/google/gwt/user/client/ui/HorizontalPanel.java
index df5184d..c91bb29 100644
--- a/user/src/com/google/gwt/user/client/ui/HorizontalPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/HorizontalPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * A panel that lays all of its widgets out in a single horizontal column.
diff --git a/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java b/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java
index 8ce20ed..675e71e 100644
--- a/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/HorizontalSplitPanel.java
@@ -18,13 +18,13 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.TextAlign;
 import com.google.gwt.i18n.client.LocaleInfo;
 import com.google.gwt.resources.client.ClientBundle;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Timer;
 
 /**
diff --git a/user/src/com/google/gwt/user/client/ui/Hyperlink.java b/user/src/com/google/gwt/user/client/ui/Hyperlink.java
index 60b0ed4..ec2d1da 100644
--- a/user/src/com/google/gwt/user/client/ui/Hyperlink.java
+++ b/user/src/com/google/gwt/user/client/ui/Hyperlink.java
@@ -16,6 +16,7 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.HasClickHandlers;
@@ -25,7 +26,6 @@
 import com.google.gwt.i18n.shared.HasDirectionEstimator;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.ui.impl.HyperlinkImpl;
diff --git a/user/src/com/google/gwt/user/client/ui/MenuBar.java b/user/src/com/google/gwt/user/client/ui/MenuBar.java
index dda33fc..d61799b 100644
--- a/user/src/com/google/gwt/user/client/ui/MenuBar.java
+++ b/user/src/com/google/gwt/user/client/ui/MenuBar.java
@@ -20,6 +20,7 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.event.dom.client.BlurEvent;
 import com.google.gwt.event.dom.client.BlurHandler;
@@ -34,7 +35,6 @@
 import com.google.gwt.resources.client.ImageResource.ImageOptions;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Event.NativePreviewEvent;
 import com.google.gwt.user.client.ui.PopupPanel.AnimationType;
diff --git a/user/src/com/google/gwt/user/client/ui/MenuItemSeparator.java b/user/src/com/google/gwt/user/client/ui/MenuItemSeparator.java
index b6a49f0..d7cfa02 100644
--- a/user/src/com/google/gwt/user/client/ui/MenuItemSeparator.java
+++ b/user/src/com/google/gwt/user/client/ui/MenuItemSeparator.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * A separator that can be placed in a
diff --git a/user/src/com/google/gwt/user/client/ui/MouseListenerCollection.java b/user/src/com/google/gwt/user/client/ui/MouseListenerCollection.java
index 57c4311..808a224 100644
--- a/user/src/com/google/gwt/user/client/ui/MouseListenerCollection.java
+++ b/user/src/com/google/gwt/user/client/ui/MouseListenerCollection.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Window;
 
diff --git a/user/src/com/google/gwt/user/client/ui/NamedFrame.java b/user/src/com/google/gwt/user/client/ui/NamedFrame.java
index de95fa8..32c7e70 100644
--- a/user/src/com/google/gwt/user/client/ui/NamedFrame.java
+++ b/user/src/com/google/gwt/user/client/ui/NamedFrame.java
@@ -17,12 +17,12 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.IFrameElement;
 import com.google.gwt.safehtml.client.SafeHtmlTemplates;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.uibinder.client.UiConstructor;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * A {@link com.google.gwt.user.client.ui.Frame} that has a 'name' associated
diff --git a/user/src/com/google/gwt/user/client/ui/Panel.java b/user/src/com/google/gwt/user/client/ui/Panel.java
index 2884ec4..8caa88c 100644
--- a/user/src/com/google/gwt/user/client/ui/Panel.java
+++ b/user/src/com/google/gwt/user/client/ui/Panel.java
@@ -15,9 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
-
 import java.util.Iterator;
 
 /**
@@ -127,44 +124,6 @@
     child.setParent(this);
   }
 
-  /**
-   * This method was formerly part of the process of adding a Widget to a Panel
-   * but has been deprecated in favor of {@link #adopt(Widget)}.
-   * 
-   * @deprecated Use {@link #adopt(Widget)}.
-   */
-  @Deprecated
-  protected void adopt(Widget w, Element container) {
-    // Remove the widget from its current parent, if any.
-    w.removeFromParent();
-
-    // Attach it at the DOM and GWT levels.
-    if (container != null) {
-      DOM.appendChild(container, w.getElement());
-    }
-    w.setParent(this);
-  }
-
-  /**
-   * This method was formerly part of the process of removing a Widget from a
-   * Panel but has been deprecated in favor of {@link #orphan(Widget)}.
-   * 
-   * @deprecated Use {@link #orphan(Widget)}.
-   */
-  @Deprecated
-  protected void disown(Widget w) {
-    // Only disown it if it's actually contained in this panel.
-    if (w.getParent() != this) {
-      throw new IllegalArgumentException("w is not a child of this panel");
-    }
-
-    // setParent() must be called before removeChild() to ensure that the
-    // element is still attached when onDetach()/onUnload() are called.
-    Element elem = w.getElement();
-    w.setParent(null);
-    DOM.getParent(elem).removeChild(elem);
-  }
-
   @Override
   protected void doAttachChildren() {
     AttachDetachException.tryCommand(this, AttachDetachException.attachCommand);
diff --git a/user/src/com/google/gwt/user/client/ui/RenderablePanel.java b/user/src/com/google/gwt/user/client/ui/RenderablePanel.java
index 3656ecb..b5cc978 100644
--- a/user/src/com/google/gwt/user/client/ui/RenderablePanel.java
+++ b/user/src/com/google/gwt/user/client/ui/RenderablePanel.java
@@ -97,8 +97,7 @@
    * @param toReplace the element to be replaced by the widget
    */
   public final void addAndReplaceElement(Widget widget, Element toReplace) {
-    com.google.gwt.user.client.Element clientElem = toReplace.cast();
-    addAndReplaceElement(widget, clientElem);
+    addAndReplaceElement(widget, toReplace.<com.google.gwt.user.client.Element>cast());
   }
 
   /**
diff --git a/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java b/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java
index 49f1278..2ee5e82 100644
--- a/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/ResizeLayoutPanel.java
@@ -19,6 +19,7 @@
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.dom.client.Style.Overflow;
 import com.google.gwt.dom.client.Style.Position;
@@ -31,7 +32,6 @@
 import com.google.gwt.layout.client.Layout;
 import com.google.gwt.layout.client.Layout.Layer;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.EventListener;
 import com.google.gwt.user.client.ui.ResizeLayoutPanel.Impl.Delegate;
diff --git a/user/src/com/google/gwt/user/client/ui/RootPanel.java b/user/src/com/google/gwt/user/client/ui/RootPanel.java
index c4929c6..12cac1b 100644
--- a/user/src/com/google/gwt/user/client/ui/RootPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/RootPanel.java
@@ -297,7 +297,7 @@
   }
 
   private RootPanel(Element elem) {
-    super(elem.<com.google.gwt.user.client.Element> cast());
+    super(elem);
     onAttach();
   }
 
@@ -317,7 +317,7 @@
     clear();
 
     if (clearDom) {
-      com.google.gwt.user.client.Element containerElement = getElement();
+      Element containerElement = getElement();
       while (containerElement.hasChildNodes()) {
         containerElement.removeChild(containerElement.getFirstChild());
       }
diff --git a/user/src/com/google/gwt/user/client/ui/ScrollPanel.java b/user/src/com/google/gwt/user/client/ui/ScrollPanel.java
index 394b92f..daf3186 100644
--- a/user/src/com/google/gwt/user/client/ui/ScrollPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/ScrollPanel.java
@@ -16,13 +16,13 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Overflow;
 import com.google.gwt.dom.client.Style.Position;
 import com.google.gwt.event.dom.client.ScrollEvent;
 import com.google.gwt.event.dom.client.ScrollHandler;
 import com.google.gwt.event.shared.HandlerRegistration;
 import com.google.gwt.touch.client.TouchScroller;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 
 /**
@@ -297,8 +297,8 @@
   }
 
   @Override
-  protected Element getContainerElement() {
-    return containerElem;
+  protected com.google.gwt.user.client.Element getContainerElement() {
+    return containerElem.cast();
   }
 
   /**
@@ -307,8 +307,8 @@
    * 
    * @return the scrollable element
    */
-  protected Element getScrollableElement() {
-    return scrollableElem;
+  protected com.google.gwt.user.client.Element getScrollableElement() {
+    return scrollableElem.cast();
   }
 
   @Override
diff --git a/user/src/com/google/gwt/user/client/ui/SplitPanel.java b/user/src/com/google/gwt/user/client/ui/SplitPanel.java
index 162d472..9413623 100644
--- a/user/src/com/google/gwt/user/client/ui/SplitPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/SplitPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 
 import java.util.Iterator;
diff --git a/user/src/com/google/gwt/user/client/ui/StackPanel.java b/user/src/com/google/gwt/user/client/ui/StackPanel.java
index f1c809a..b01c015 100644
--- a/user/src/com/google/gwt/user/client/ui/StackPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/StackPanel.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 
 /**
diff --git a/user/src/com/google/gwt/user/client/ui/Tree.java b/user/src/com/google/gwt/user/client/ui/Tree.java
index 46120df..aa80925 100644
--- a/user/src/com/google/gwt/user/client/ui/Tree.java
+++ b/user/src/com/google/gwt/user/client/ui/Tree.java
@@ -20,6 +20,7 @@
 import com.google.gwt.aria.client.Roles;
 import com.google.gwt.aria.client.SelectedValue;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.BlurEvent;
 import com.google.gwt.event.dom.client.BlurHandler;
 import com.google.gwt.event.dom.client.FocusEvent;
@@ -61,7 +62,6 @@
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.AbstractImagePrototype.ImagePrototypeElement;
 
diff --git a/user/src/com/google/gwt/user/client/ui/TreeItem.java b/user/src/com/google/gwt/user/client/ui/TreeItem.java
index 10c916a..6822463 100644
--- a/user/src/com/google/gwt/user/client/ui/TreeItem.java
+++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java
@@ -18,12 +18,12 @@
 import com.google.gwt.animation.client.Animation;
 import com.google.gwt.aria.client.Roles;
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.i18n.client.LocaleInfo;
 import com.google.gwt.safehtml.client.HasSafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/user/src/com/google/gwt/user/client/ui/UIObject.java b/user/src/com/google/gwt/user/client/ui/UIObject.java
index 6f69f26..e04fca1 100644
--- a/user/src/com/google/gwt/user/client/ui/UIObject.java
+++ b/user/src/com/google/gwt/user/client/ui/UIObject.java
@@ -276,7 +276,7 @@
    * @return the objects's space-separated style names
    */
   protected static String getStyleName(Element elem) {
-    return elem.<com.google.gwt.user.client.Element>cast().getPropertyString("className");
+    return elem.getClassName();
   }
 
   /**
@@ -305,7 +305,7 @@
    * @param styleName the new style name
    */
   protected static void setStyleName(Element elem, String styleName) {
-    elem.<com.google.gwt.user.client.Element>cast().setPropertyString("className", styleName);
+    elem.setClassName(styleName);
   }
 
   /**
@@ -550,14 +550,13 @@
    * This method should not be overridden. It is non-final solely to support
    * legacy code that depends upon overriding it. If it is overridden, the
    * subclass implementation must not return a different element than was
-   * previously set using
-   * {@link #setElement(com.google.gwt.user.client.Element)}.
+   * previously set using {@link #setElement(Element)}.
    * 
    * @return the object's browser element
    */
   public com.google.gwt.user.client.Element getElement() {
     assert (element != null) : MISSING_ELEMENT_ERROR;
-    return (com.google.gwt.user.client.Element) element;
+    return element.cast();
   }
 
   /**
@@ -900,7 +899,7 @@
    * @param elem the object's element
    */
   protected final void setElement(Element elem) {
-    setElement((com.google.gwt.user.client.Element) elem);
+    setElement(elem.<com.google.gwt.user.client.Element>cast());
   }
 
   /**
@@ -912,7 +911,9 @@
    * 1.5, {@link #setElement(Element)} is the preferred method.
    * 
    * @param elem the object's element
+   * @deprecated Use and override {@link #setElement(Element)} instead.
    */
+  @Deprecated
   protected void setElement(com.google.gwt.user.client.Element elem) {
     assert (element == null || PotentialElement.isPotential(element)) : SETELEMENT_TWICE_ERROR;
     this.element = elem;
diff --git a/user/src/com/google/gwt/user/client/ui/VerticalPanel.java b/user/src/com/google/gwt/user/client/ui/VerticalPanel.java
index 593de88..1b7e9cf 100644
--- a/user/src/com/google/gwt/user/client/ui/VerticalPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/VerticalPanel.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * A panel that lays all of its widgets out in a single vertical column.
diff --git a/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java b/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java
index 2c0112c..6816be1 100644
--- a/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java
+++ b/user/src/com/google/gwt/user/client/ui/VerticalSplitPanel.java
@@ -18,12 +18,12 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.TextAlign;
 import com.google.gwt.resources.client.ClientBundle;
 import com.google.gwt.resources.client.ImageResource;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Timer;
 
 /**
diff --git a/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImplIE6.java b/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImplIE6.java
index d69fe3b..a8d370d 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImplIE6.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImplIE6.java
@@ -38,7 +38,7 @@
   private static native void injectGlobalHandler() /*-{
     $wnd.__gwt_transparentImgHandler = function (elem) {
       elem.onerror = null;
-      @com.google.gwt.user.client.DOM::setImgSrc(Lcom/google/gwt/user/client/Element;Ljava/lang/String;)(elem, @com.google.gwt.core.client.GWT::getModuleBaseURL()() + "clear.cache.gif");
+      @com.google.gwt.user.client.DOM::setImgSrc(Lcom/google/gwt/dom/client/Element;Ljava/lang/String;)(elem, @com.google.gwt.core.client.GWT::getModuleBaseURL()() + "clear.cache.gif");
     };
   }-*/;
 
diff --git a/user/src/com/google/gwt/user/client/ui/impl/FocusImpl.java b/user/src/com/google/gwt/user/client/ui/impl/FocusImpl.java
index 48eb210..8d74297 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/FocusImpl.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/FocusImpl.java
@@ -17,7 +17,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Document;
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Implementation interface for creating and manipulating focusable elements
diff --git a/user/src/com/google/gwt/user/client/ui/impl/FocusImplIE6.java b/user/src/com/google/gwt/user/client/ui/impl/FocusImplIE6.java
index f330924..1b5f6f8 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/FocusImplIE6.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/FocusImplIE6.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Implementation of {@link com.google.gwt.user.client.ui.impl.FocusImpl}
diff --git a/user/src/com/google/gwt/user/client/ui/impl/FocusImplSafari.java b/user/src/com/google/gwt/user/client/ui/impl/FocusImplSafari.java
index 700e073..eff7557 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/FocusImplSafari.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/FocusImplSafari.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Safari-specific implementation of {@link FocusImpl} that creates a completely
diff --git a/user/src/com/google/gwt/user/client/ui/impl/FocusImplStandard.java b/user/src/com/google/gwt/user/client/ui/impl/FocusImplStandard.java
index ccb18e6..ff7d623 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/FocusImplStandard.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/FocusImplStandard.java
@@ -16,7 +16,7 @@
 package com.google.gwt.user.client.ui.impl;
 
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Implementation of {@link com.google.gwt.user.client.ui.impl.FocusImpl} that
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java
index a18da4b..440f9c0 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java
@@ -15,10 +15,10 @@
  */
 package com.google.gwt.user.client.ui.impl;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.logical.shared.HasInitializeHandlers;
 import com.google.gwt.event.logical.shared.InitializeEvent;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.RichTextArea;
 
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java
index f641c13..74fd238 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui.impl;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Node;
-import com.google.gwt.user.client.Element;
 
 /**
  * IE6-specific implementation of rich-text editing.
@@ -105,7 +105,7 @@
       // this code is shared with all IE implementations (see RichText.gwt.xml)
       // the event can be passed in as argument (IE9) or from the content window (IE8/7/6)
       evt = evt || elem.contentWindow.event;
-      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;)(evt, elem);
+      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
     });
 
     body.onkeydown =
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java
index 2c5f7b1..5df952c 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java
@@ -38,7 +38,7 @@
     var wnd = elem.contentWindow;
 
     elem.__gwt_handler = function(evt) {
-      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;)(evt, elem);
+      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
     };
 
     wnd.addEventListener('keydown', elem.__gwt_handler, true);
@@ -56,11 +56,11 @@
     // dispatch through the normal handler method, as some of the querying we do
     // there interferes with focus.
     wnd.onfocus = function(evt) {
-      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;)(evt, elem);
+      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
     };
 
     wnd.onblur = function(evt) {
-      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;)(evt, elem);
+      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
     };
   }-*/;
 
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
index ba1b704..075a546 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
@@ -16,8 +16,8 @@
 package com.google.gwt.user.client.ui.impl;
 
 import com.google.gwt.core.client.JavaScriptException;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.RichTextArea;
 import com.google.gwt.user.client.ui.RichTextArea.FontSize;
 import com.google.gwt.user.client.ui.RichTextArea.Justification;
@@ -314,7 +314,7 @@
     var wnd = elem.contentWindow;
 
     elem.__gwt_handler = $entry(function(evt) {
-      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;)(evt, elem);
+      @com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/dom/client/Element;)(evt, elem);
     });
 
     elem.__gwt_focusHandler = function(evt) {
diff --git a/user/src/com/google/gwt/user/client/ui/impl/TextBoxImpl.java b/user/src/com/google/gwt/user/client/ui/impl/TextBoxImpl.java
index c58454e..5e39f77 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/TextBoxImpl.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/TextBoxImpl.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * Implementation class used by {@link com.google.gwt.user.client.ui.TextBox}.
diff --git a/user/src/com/google/gwt/user/client/ui/impl/TextBoxImplIE6.java b/user/src/com/google/gwt/user/client/ui/impl/TextBoxImplIE6.java
index f79aecc..dfd558d 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/TextBoxImplIE6.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/TextBoxImplIE6.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.user.client.ui.impl;
 
-import com.google.gwt.user.client.Element;
+import com.google.gwt.dom.client.Element;
 
 /**
  * IE6-specific implementation of
diff --git a/user/src/com/google/gwt/user/datepicker/client/CellGridImpl.java b/user/src/com/google/gwt/user/datepicker/client/CellGridImpl.java
index 2e17692..179c22f 100644
--- a/user/src/com/google/gwt/user/datepicker/client/CellGridImpl.java
+++ b/user/src/com/google/gwt/user/datepicker/client/CellGridImpl.java
@@ -177,14 +177,13 @@
   public Cell getCell(Element element) {
     // This cast is always valid because both Element types are JSOs and have
     // no new fields are added in the subclass.
-    return elementToCell.get((com.google.gwt.user.client.Element) element);
+    return elementToCell.get(element);
   }
 
   public Cell getCell(Event e) {
     // Find out which cell was actually clicked.
     Element td = getEventTargetCell(e);
-    return td != null
-        ? elementToCell.get((com.google.gwt.user.client.Element) td) : null;
+    return td != null ? elementToCell.get(td) : null;
   }
 
   public Cell getCell(int i) {
@@ -228,7 +227,7 @@
       case Event.ONMOUSEOUT: {
         Element e = DOM.eventGetFromElement(event);
         if (e != null) {
-          Cell cell = elementToCell.get((com.google.gwt.user.client.Element) e);
+          Cell cell = elementToCell.get(e);
           if (cell == highlightedCell) {
             setHighlighted(null);
           }
@@ -238,7 +237,7 @@
       case Event.ONMOUSEOVER: {
         Element e = DOM.eventGetToElement(event);
         if (e != null) {
-          Cell cell = elementToCell.get((com.google.gwt.user.client.Element) e);
+          Cell cell = elementToCell.get(e);
           if (isActive(cell)) {
             setHighlighted(cell);
           }
diff --git a/user/test/com/google/gwt/cell/client/CellTestBase.java b/user/test/com/google/gwt/cell/client/CellTestBase.java
index e7d0fc0..15381f5 100644
--- a/user/test/com/google/gwt/cell/client/CellTestBase.java
+++ b/user/test/com/google/gwt/cell/client/CellTestBase.java
@@ -259,7 +259,7 @@
   protected Element testOnBrowserEvent(final Cell<T> cell, String startHtml, NativeEvent event,
       final T value, T expectedValue, boolean dispatchToFirstChild) {
     // Setup the parent element.
-    final com.google.gwt.user.client.Element parent = Document.get().createDivElement().cast();
+    final Element parent = Document.get().createDivElement();
     parent.setInnerHTML(startHtml);
     Document.get().getBody().appendChild(parent);
 
diff --git a/user/test/com/google/gwt/cell/client/CompositeCellTest.java b/user/test/com/google/gwt/cell/client/CompositeCellTest.java
index c69b6df..dd92cc4 100644
--- a/user/test/com/google/gwt/cell/client/CompositeCellTest.java
+++ b/user/test/com/google/gwt/cell/client/CompositeCellTest.java
@@ -98,7 +98,7 @@
   @SuppressWarnings("unchecked")
   public void testOnBrowserEventCell() {
     // Setup the parent element.
-    final com.google.gwt.user.client.Element parent = Document.get().createDivElement().cast();
+    final Element parent = Document.get().createDivElement();
     parent.setInnerHTML(getExpectedInnerHtml());
     Document.get().getBody().appendChild(parent);
 
diff --git a/user/test/com/google/gwt/cell/client/EditableCellTestBase.java b/user/test/com/google/gwt/cell/client/EditableCellTestBase.java
index f1c6230..6d80338 100644
--- a/user/test/com/google/gwt/cell/client/EditableCellTestBase.java
+++ b/user/test/com/google/gwt/cell/client/EditableCellTestBase.java
@@ -82,7 +82,7 @@
   protected Element testOnBrowserEvent(String startHtml, NativeEvent event,
       final T value, V viewData, T expectedValue, V expectedViewData) {
     // Setup the parent element.
-    final com.google.gwt.user.client.Element parent = Document.get().createDivElement().cast();
+    final Element parent = Document.get().createDivElement();
     parent.setInnerHTML(startHtml);
     Document.get().getBody().appendChild(parent);
 
diff --git a/user/test/com/google/gwt/junit/client/GWTTestCaseTestBase.java b/user/test/com/google/gwt/junit/client/GWTTestCaseTestBase.java
index e9737ae..3bf510b 100644
--- a/user/test/com/google/gwt/junit/client/GWTTestCaseTestBase.java
+++ b/user/test/com/google/gwt/junit/client/GWTTestCaseTestBase.java
@@ -47,7 +47,7 @@
       }
     };
 
-    DOM.setEventListener(btn.<com.google.gwt.user.client.Element>cast(), listener);
+    DOM.setEventListener(btn, listener);
     try {
       btn.click();
     } catch (JavaScriptException ignored) {
diff --git a/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java b/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java
index c4dfad5..460b14d 100644
--- a/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java
@@ -16,6 +16,7 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.InputElement;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -26,7 +27,6 @@
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Tests the CheckBox Widget.
diff --git a/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java b/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java
index 172c4bb..17d7df8 100644
--- a/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java
@@ -15,12 +15,12 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.i18n.client.LocaleInfo;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Tests standard DOM operations in the {@link DOM} class in RTL mode.
diff --git a/user/test/com/google/gwt/user/client/ui/DOMTest.java b/user/test/com/google/gwt/user/client/ui/DOMTest.java
index 80ce034..3e6c04e 100644
--- a/user/test/com/google/gwt/user/client/ui/DOMTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DOMTest.java
@@ -21,6 +21,7 @@
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.dom.client.BodyElement;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.dom.client.Text;
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -29,7 +30,6 @@
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Timer;
 
diff --git a/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java b/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java
index f913425..4097d93 100644
--- a/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java
@@ -16,8 +16,8 @@
 
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Test for {@link DecoratorPanel}.
diff --git a/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java b/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
index 44f50eb..1958a10 100644
--- a/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
@@ -18,6 +18,7 @@
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -33,7 +34,6 @@
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Unit test for {@link DialogBox}.
diff --git a/user/test/com/google/gwt/user/client/ui/DockPanelTest.java b/user/test/com/google/gwt/user/client/ui/DockPanelTest.java
index f5497f8..6e329b8 100644
--- a/user/test/com/google/gwt/user/client/ui/DockPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DockPanelTest.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Tests the DockPanel widget.
diff --git a/user/test/com/google/gwt/user/client/ui/GridTest.java b/user/test/com/google/gwt/user/client/ui/GridTest.java
index c1e3553..e4fb933 100644
--- a/user/test/com/google/gwt/user/client/ui/GridTest.java
+++ b/user/test/com/google/gwt/user/client/ui/GridTest.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.HTMLTable.ColumnFormatter;
 
 /**
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 b9ec57e..b6c4e3e 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
@@ -168,7 +168,7 @@
   public void testAddAndReplaceElementForUserElement() {
     HTMLPanel hp = new HTMLPanel("<div id='parent'>foo<span id='placeholder'></span>bar</div>");
     RootPanel.get().add(hp);
-    com.google.gwt.user.client.Element placeholder = hp.getElementById("placeholder");
+    Element placeholder = hp.getElementById("placeholder");
     Button button = new Button("my button");
 
     hp.addAndReplaceElement(button, placeholder);
@@ -179,13 +179,13 @@
 
   /**
    * Ensures that overloaded version of
-   * {@link HTMLPanel#addAndReplaceElement(IsWidget, com.google.gwt.user.client.Element)}
+   * {@link HTMLPanel#addAndReplaceElement(IsWidget, Element)}
    * for IsWidget puts the widget in exactly the right place in the DOM.
    */
   public void testAddAndReplaceElementForUserElementAsIsWidget() {
     HTMLPanel hp = new HTMLPanel("<div id='parent'>foo<span id='placeholder'></span>bar</div>");
     RootPanel.get().add(hp);
-    com.google.gwt.user.client.Element placeholder = hp.getElementById("placeholder");
+    Element placeholder = hp.getElementById("placeholder");
     Button button = new Button("my button");
     // IsWidget reference to call the overloaded version
     IsWidget isWidget = button;
diff --git a/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java b/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java
index 70ec470..4e894f9 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java
@@ -15,10 +15,10 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.TableCellElement;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.HTMLTable.Cell;
 import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
 import com.google.gwt.user.client.ui.HTMLTable.ColumnFormatter;
diff --git a/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java b/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java
index 9459c47..338703e 100644
--- a/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java
+++ b/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java
@@ -16,13 +16,13 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.logical.shared.ValueChangeEvent;
 import com.google.gwt.event.logical.shared.ValueChangeHandler;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.History;
 import com.google.web.bindery.event.shared.HandlerRegistration;
 
diff --git a/user/test/com/google/gwt/user/client/ui/LinearPanelTest.java b/user/test/com/google/gwt/user/client/ui/LinearPanelTest.java
index 90a2c36..4970c25 100644
--- a/user/test/com/google/gwt/user/client/ui/LinearPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/LinearPanelTest.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * TODO: document me.
diff --git a/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java b/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java
index a1cf423..b1d3317 100644
--- a/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java
@@ -124,7 +124,7 @@
     RadioButton radio = new RadioButton("myName", "myLabel");
 
     // We need to replace the input element so we can keep a handle to it
-    com.google.gwt.user.client.Element newInput = DOM.createInputRadio("MyName");
+    Element newInput = DOM.createInputRadio("MyName");
     radio.replaceInputElement(newInput);
 
     radio.ensureDebugId("myRadio");
diff --git a/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java b/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java
index 434e209..36217d2 100644
--- a/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java
+++ b/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java
@@ -17,6 +17,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -28,7 +29,6 @@
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
-import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.ui.RichTextArea.BasicFormatter;
diff --git a/user/test/com/google/gwt/user/client/ui/RootPanelTest.java b/user/test/com/google/gwt/user/client/ui/RootPanelTest.java
index d455bd1..d4a77a7 100644
--- a/user/test/com/google/gwt/user/client/ui/RootPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/RootPanelTest.java
@@ -38,7 +38,7 @@
     rootPanel.add(new Button("a"));
     rootPanel.add(new Button("b"));
 
-    com.google.gwt.user.client.Element newDiv = DOM.createDiv();
+    Element newDiv = DOM.createDiv();
     newDiv.setInnerText("c");
     rootPanel.getElement().appendChild(newDiv);
 
@@ -55,7 +55,7 @@
     rootPanel.add(new Button("a"));
     rootPanel.add(new Button("b"));
 
-    com.google.gwt.user.client.Element newDiv = DOM.createDiv();
+    Element newDiv = DOM.createDiv();
     newDiv.setInnerText("c");
     rootPanel.getElement().appendChild(newDiv);
 
@@ -185,7 +185,7 @@
 
   private RootPanel createDOM(String id) {
     // create our own part in the document
-    com.google.gwt.user.client.Element div = DOM.createDiv();
+    Element div = DOM.createDiv();
     div.setId(id);
     Document.get().getBody().appendChild(div);
 
diff --git a/user/test/com/google/gwt/user/client/ui/StackPanelTest.java b/user/test/com/google/gwt/user/client/ui/StackPanelTest.java
index 4bf82e6..a7748d7 100644
--- a/user/test/com/google/gwt/user/client/ui/StackPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/StackPanelTest.java
@@ -15,10 +15,10 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.DeferredCommand;
-import com.google.gwt.user.client.Element;
 
 /**
  * Test cases for {@link StackPanel}.
diff --git a/user/test/com/google/gwt/user/client/ui/TabBarTest.java b/user/test/com/google/gwt/user/client/ui/TabBarTest.java
index a91e8bb..eaafc0d 100644
--- a/user/test/com/google/gwt/user/client/ui/TabBarTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TabBarTest.java
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
 import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
 import com.google.gwt.event.logical.shared.SelectionEvent;
@@ -22,7 +23,6 @@
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Tests the {@link TabBar} widget.
diff --git a/user/test/com/google/gwt/user/client/ui/TabPanelTest.java b/user/test/com/google/gwt/user/client/ui/TabPanelTest.java
index 8f9a646..ba9be0e 100644
--- a/user/test/com/google/gwt/user/client/ui/TabPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TabPanelTest.java
@@ -15,13 +15,13 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
 import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
 import com.google.gwt.event.logical.shared.SelectionEvent;
 import com.google.gwt.event.logical.shared.SelectionHandler;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 import java.util.Iterator;
 
diff --git a/user/test/com/google/gwt/user/client/ui/TreeTest.java b/user/test/com/google/gwt/user/client/ui/TreeTest.java
index ea3d8e6..d17f2f3 100644
--- a/user/test/com/google/gwt/user/client/ui/TreeTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TreeTest.java
@@ -15,12 +15,12 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 import java.util.Iterator;
 
diff --git a/user/test/com/google/gwt/user/client/ui/UIObjectTest.java b/user/test/com/google/gwt/user/client/ui/UIObjectTest.java
index dfa2f23..4207921 100644
--- a/user/test/com/google/gwt/user/client/ui/UIObjectTest.java
+++ b/user/test/com/google/gwt/user/client/ui/UIObjectTest.java
@@ -18,11 +18,11 @@
 import com.google.gwt.aria.client.State;
 import com.google.gwt.debug.client.DebugInfo;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.SpanElement;
 import com.google.gwt.dom.client.Style;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
 
 /**
  * Tests UIObject. Currently, focuses on style name behaviors.
diff --git a/user/test/com/google/gwt/user/client/ui/WidgetOnLoadTest.java b/user/test/com/google/gwt/user/client/ui/WidgetOnLoadTest.java
index 6d0e951..c6c2ae7 100644
--- a/user/test/com/google/gwt/user/client/ui/WidgetOnLoadTest.java
+++ b/user/test/com/google/gwt/user/client/ui/WidgetOnLoadTest.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.user.client.ui;
 
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.logical.shared.AttachEvent;
 import com.google.gwt.junit.client.GWTTestCase;
-import com.google.gwt.user.client.Element;
 
 /**
  * Tests the semantics and ordering of onAttach/onDetach/onLoad/onUnload.