diff --git a/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java b/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java
index 0751ad4..9730d1e 100644
--- a/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java
+++ b/dev/core/src-dummy/com/google/gwt/dev/BootStrapPlatform.java
@@ -26,11 +26,11 @@
     // nothing to do
   }
 
-  public static void initHostedMode() {
-    // nothing to do.
-  }
-
   public static void initGui() {
     // nothing to do
   }
+
+  public static void initHostedMode() {
+    // nothing to do.
+  }
 }
diff --git a/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java
index 1c43f80..f3313c4 100644
--- a/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java
+++ b/dev/linux/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -26,6 +26,10 @@
     // nothing to do
   }
 
+  public static void initGui() {
+    // nothing to do
+  }
+
   /**
    * Find a usable Mozilla installation and load it. Fail immediately, logging
    * to stderr and exiting with a failure code, if we are unable to find or load
@@ -55,8 +59,4 @@
     String mozillaPath = mozInstall.getPath();
     System.setProperty("swt.mozilla.path", mozillaPath);
   }
-
-  public static void initGui() {
-    // nothing to do
-  }
 }
diff --git a/dev/linux/src/com/google/gwt/dev/shell/moz/ModuleSpaceMoz.java b/dev/linux/src/com/google/gwt/dev/shell/moz/ModuleSpaceMoz.java
index a12ffb0..59a650c 100644
--- a/dev/linux/src/com/google/gwt/dev/shell/moz/ModuleSpaceMoz.java
+++ b/dev/linux/src/com/google/gwt/dev/shell/moz/ModuleSpaceMoz.java
@@ -18,8 +18,6 @@
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.dev.javac.CompiledClass;
 import com.google.gwt.dev.javac.JsniMethod;
-import com.google.gwt.dev.js.ast.JsFunction;
-import com.google.gwt.dev.js.ast.JsProgram;
 import com.google.gwt.dev.shell.CompilingClassLoader;
 import com.google.gwt.dev.shell.DispatchIdOracle;
 import com.google.gwt.dev.shell.JsValue;
@@ -28,7 +26,6 @@
 import com.google.gwt.dev.shell.ModuleSpaceHost;
 import com.google.gwt.dev.util.Jsni;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -68,8 +65,8 @@
         // The error has been logged; just ignore it for now.
         continue;
       }
-      createNative(jsniMethod.location(),
-          jsniMethod.line(), jsniMethod.name(), jsniMethod.paramNames(), body);
+      createNative(jsniMethod.location(), jsniMethod.line(), jsniMethod.name(),
+          jsniMethod.paramNames(), body);
     }
   }
 
diff --git a/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java
index 7fb016b..164a4a6 100644
--- a/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java
+++ b/dev/mac/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -30,6 +30,40 @@
     fixContextClassLoaderOnMainThread();
   }
 
+  /**
+   * 
+   * This works around a complicated set of OS X SWT/AWT compatibilities.
+   * {@link #setSystemProperties()} will typically need to be called first to
+   * ensure that CocoaComponent compatibility mode is disabled. The constraints
+   * of using SWT and AWT together are:
+   * 
+   * <p>
+   * 1 - The SWT event dispatch needs to be running on the main application
+   * thread (only possible with -XstartOnFirstThread VM arg).
+   * </p>
+   * <p>
+   * 2 - The first call into AWT must be from the main thread after a SWT
+   * display has been initialized.
+   * </p>
+   * 
+   * This method allows the compiler to have a tree logger in a SWT window and
+   * allow generators to use AWT for image generation.
+   * 
+   * <p>
+   * NOTE: In GUI applications, {@link #setSystemProperties()} and
+   * {@link #initGui()} will both be called during the bootstrap process.
+   * Command line applications (like
+   * 
+   * @{link com.google.gwt.dev.GWTCompiler}) avoid eagerly initializing AWT and
+   *        only call {@link #setSystemProperties()} allowing AWT to be
+   *        initialized on demand.
+   *        </p>
+   */
+  public static void initGui() {
+    GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
+    Toolkit.getDefaultToolkit();
+  }
+
   public static void initHostedMode() {
     /*
      * The following check must be made before attempting to initialize Safari,
@@ -55,40 +89,6 @@
   }
 
   /**
-   * 
-   * This works around a complicated set of OS X SWT/AWT compatibilities.
-   * {@link #setSystemProperties()} will typically need to be called first to
-   * ensure that CocoaComponent compatibility mode is disabled. The constraints
-   * of using SWT and AWT together are:
-   * 
-   * <p>
-   * 1 - The SWT event dispatch needs to be running on the main application
-   * thread (only possible with -XstartOnFirstThread VM arg).
-   * </p>
-   * <p>
-   * 2 - The first call into AWT must be from the main thread after a SWT
-   * display has been initialized.
-   * </p>
-   * 
-   * This method allows the compiler to have a tree logger in a SWT window and
-   * allow generators to use AWT for image generation.
-   * 
-   * <p>
-   * NOTE: In GUI applications, {@link #setSystemProperties()} and
-   * {@link #initGui()} will both be called during the bootstrap
-   * process. Command line applications (like
-   * 
-   * @{link com.google.gwt.dev.GWTCompiler}) avoid eagerly initializing AWT and
-   *        only call {@link #setSystemProperties()} allowing AWT to be
-   *        initialized on demand.
-   *        </p>
-   */
-  public static void initGui() {
-    GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
-    Toolkit.getDefaultToolkit();
-  }
-
-  /**
    * This works around apple radr:5569300. When -XstartOnFirstThread is passed
    * as a jvm argument, the main thread returns null for
    * {@link Thread#getContextClassLoader()}.
@@ -124,8 +124,8 @@
    * 
    * <p>
    * NOTE: In GUI applications, {@link #setSystemProperties()} and
-   * {@link #initGui()} will both be called during the bootstrap
-   * process. Command line applications (like
+   * {@link #initGui()} will both be called during the bootstrap process.
+   * Command line applications (like
    * 
    * @{link com.google.gwt.dev.GWTCompiler}) avoid eagerly initializing AWT and
    *        only call {@link #setSystemProperties()} allowing AWT to be
diff --git a/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java
index 2b0f086..7e261dc 100644
--- a/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java
+++ b/dev/windows/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -23,12 +23,12 @@
   public static void applyPlatformHacks() {
     // nothing to do
   }
-  
-  public static void initHostedMode() {
+
+  public static void initGui() {
     // nothing to do
   }
 
-  public static void initGui() {
+  public static void initHostedMode() {
     // nothing to do
   }
 }
