diff --git a/user/src/com/google/gwt/user/rebind/AsyncProxyGenerator.java b/user/src/com/google/gwt/user/rebind/AsyncProxyGenerator.java
index 4bc1d21..ab6ace3 100644
--- a/user/src/com/google/gwt/user/rebind/AsyncProxyGenerator.java
+++ b/user/src/com/google/gwt/user/rebind/AsyncProxyGenerator.java
@@ -323,8 +323,8 @@
     }
 
     // Must be able to GWT.create()
-    if (!concreteType.isStatic()) {
-      logger.log(TreeLogger.ERROR, "Expecting concrete type"
+    if (concreteType.isMemberType() && !concreteType.isStatic()) {
+      logger.log(TreeLogger.ERROR, "Expecting concrete type "
           + concreteType.getQualifiedSourceName() + " to be static.");
       throw new UnableToCompleteException();
     }
diff --git a/user/test/com/google/gwt/user/client/AsyncProxyTest.java b/user/test/com/google/gwt/user/client/AsyncProxyTest.java
index 94f7474..2488c1d 100644
--- a/user/test/com/google/gwt/user/client/AsyncProxyTest.java
+++ b/user/test/com/google/gwt/user/client/AsyncProxyTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -120,6 +120,12 @@
     }
   }
 
+  @AllowNonVoid
+  @ConcreteType(AsyncProxyTestTopLevelImpl.class)
+  @DefaultValue(intValue = 42, longValue = 42)
+  interface TopLevelProxy extends AsyncProxy<Test>, Test {
+  }
+
   private static final int TEST_FINISH_DELAY_MILLIS = 10000;
 
   private static AsyncProxyTest testInstance;
@@ -193,4 +199,9 @@
     delayTestFinish(TEST_FINISH_DELAY_MILLIS);
     proxy.two();
   }
+
+  public void testProxyOfTopLevel() {
+    Test proxy = GWT.create(TopLevelProxy.class);
+    assertTrue(proxy instanceof AsyncProxy);
+  }
 }
diff --git a/user/test/com/google/gwt/user/client/AsyncProxyTestTopLevelImpl.java b/user/test/com/google/gwt/user/client/AsyncProxyTestTopLevelImpl.java
new file mode 100644
index 0000000..4257632
--- /dev/null
+++ b/user/test/com/google/gwt/user/client/AsyncProxyTestTopLevelImpl.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.user.client;
+
+/**
+ * Used by AsyncProxyTest to validate that a top-level class can be an AsyncProxy.
+ */
+public class AsyncProxyTestTopLevelImpl implements AsyncProxyTest.Test {
+
+  public boolean defaultBool() {
+    return false;
+  }
+
+  public byte defaultByte() {
+    return 3;
+  }
+
+  public char defaultChar() {
+    return 0;
+  }
+
+  public double defaultDouble() {
+    return 0;
+  }
+
+  public float defaultFloat() {
+    return 0;
+  }
+
+  public int defaultInt() {
+    return 0;
+  }
+
+  public long defaultLong() {
+    return 0;
+  }
+
+  public Object defaultObject() {
+    return null;
+  }
+
+  public short defaultShort() {
+    return 0;
+  }
+
+  public String defaultString() {
+    return null;
+  }
+
+  public void one() {
+  }
+
+  public void three() {
+  }
+
+  public void two() {
+  }
+
+}
