diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
index cd296df..86f42a6 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
@@ -20,7 +20,6 @@
 import com.google.gwt.dev.asm.Opcodes;
 import com.google.gwt.dev.asm.commons.EmptyVisitor;
 import com.google.gwt.dev.jdt.TypeRefVisitor;
-import com.google.gwt.dev.shell.CompilingClassLoader;
 import com.google.gwt.dev.util.DiskCache;
 import com.google.gwt.dev.util.Util;
 import com.google.gwt.dev.util.collect.HashMap;
@@ -48,6 +47,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.regex.Pattern;
 
 /**
  * Encapsulates the state of a single active compilation unit in a particular
@@ -117,7 +117,7 @@
          * javac weirdness issue where javac refers a class but does not
          * generate it.
          */
-        if (CompilingClassLoader.isClassnameGenerated(lookupName)
+        if (isClassnameGenerated(lookupName)
             && !allGeneratedClasses.contains(lookupName)) {
           allGeneratedClasses.add(lookupName);
         }
@@ -264,6 +264,27 @@
     }
   }
 
+  private static final Pattern GENERATED_CLASSNAME_PATTERN = Pattern.compile(".+\\$\\d.*");
+
+  /**
+   * Checks if the class names is generated. Accepts any classes whose names
+   * match .+$\d.* (handling named classes within anonymous classes and multiple
+   * named classes of the same name in a class, but in different methods).
+   * Checks if the class or any of its enclosing classes are anonymous or
+   * synthetic.
+   * <p>
+   * If new compilers have different conventions for anonymous and synthetic
+   * classes, this code needs to be updated.
+   * </p>
+   * 
+   * @param className name of the class to be checked.
+   * @return true iff class or any of its enclosing classes are anonymous or
+   *         synthetic.
+   */
+  public static boolean isClassnameGenerated(String className) {
+    return GENERATED_CLASSNAME_PATTERN.matcher(className).matches();
+  }
+
   private static Set<String> computeFileNameRefs(
       CompilationUnitDeclaration cud,
       final Map<String, String> binaryTypeToSourceFileMap) {
@@ -561,6 +582,6 @@
     if (!cc.getRealClassType().isLocalType()) {
       return false;
     }
-    return CompilingClassLoader.isClassnameGenerated(cc.getBinaryName());
+    return isClassnameGenerated(cc.getBinaryName());
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
index 39124ac..900f3c3 100644
--- a/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
+++ b/dev/core/src/com/google/gwt/dev/shell/CompilingClassLoader.java
@@ -62,7 +62,6 @@
 import java.util.SortedMap;
 import java.util.Stack;
 import java.util.TreeMap;
-import java.util.regex.Pattern;
 
 /**
  * An isolated {@link ClassLoader} for running all user code. All user files are
@@ -451,8 +450,6 @@
 
   private static EmmaStrategy emmaStrategy;
 
-  private static final Pattern GENERATED_CLASSNAME_PATTERN = Pattern.compile(".+\\$\\d.*");
-
   /**
    * Caches the byte code for {@link JavaScriptHost}.
    */
@@ -479,25 +476,6 @@
     emmaStrategy = EmmaStrategy.get(emmaAvailable);
   }
 
-  /**
-   * Checks if the class names is generated. Accepts any classes whose names
-   * match .+$\d.* (handling named classes within anonymous classes and multiple
-   * named classes of the same name in a class, but in different methods).
-   * Checks if the class or any of its enclosing classes are anonymous or
-   * synthetic.
-   * <p>
-   * If new compilers have different conventions for anonymous and synthetic
-   * classes, this code needs to be updated.
-   * </p>
-   * 
-   * @param className name of the class to be checked.
-   * @return true iff class or any of its enclosing classes are anonymous or
-   *         synthetic.
-   */
-  public static boolean isClassnameGenerated(String className) {
-    return GENERATED_CLASSNAME_PATTERN.matcher(className).matches();
-  }
-
   private static void classDump(String name, byte[] bytes) {
     String packageName, className;
     int pos = name.lastIndexOf('.');
@@ -1024,7 +1002,7 @@
        * compiler.
        */
       if (typeHasCompilationUnit(lookupClassName)
-          && isClassnameGenerated(className)) {
+          && CompilationUnit.isClassnameGenerated(className)) {
         /*
          * modification time = 0 ensures that whatever is on the disk is always
          * loaded.
diff --git a/dev/core/test/com/google/gwt/dev/shell/GeneratedClassnameTest.java b/dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameTest.java
similarity index 82%
rename from dev/core/test/com/google/gwt/dev/shell/GeneratedClassnameTest.java
rename to dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameTest.java
index ecf7087..3a70b0a 100644
--- a/dev/core/test/com/google/gwt/dev/shell/GeneratedClassnameTest.java
+++ b/dev/core/test/com/google/gwt/dev/javac/GeneratedClassnameTest.java
@@ -1,4 +1,4 @@
-package com.google.gwt.dev.shell;
+package com.google.gwt.dev.javac;
 
 import junit.framework.TestCase;
 
@@ -16,12 +16,12 @@
 
     for (String name : namesToAccept) {
       assertTrue("className = " + name + " should have been accepted",
-          CompilingClassLoader.isClassnameGenerated(name));
+          CompilationUnit.isClassnameGenerated(name));
     }
 
     for (String name : namesToReject) {
       assertFalse("className = " + name + " should not have been accepted",
-          CompilingClassLoader.isClassnameGenerated(name));
+          CompilationUnit.isClassnameGenerated(name));
     }
   }
 }
