diff --git a/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java b/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
index 5f5839f..8bb1eb5 100644
--- a/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
+++ b/user/src/com/google/web/bindery/requestfactory/apt/DomainChecker.java
@@ -193,8 +193,14 @@
       state.poison(clientMethodElement, Messages.domainMissingMethod(sb));
       return null;
     }
-    
-     /*
+
+    // Check if the method is public
+    if (!domainMethod.getModifiers().contains(Modifier.PUBLIC)) {
+      state.poison(clientMethodElement, Messages.domainMethodNotPublic(
+          domainMethod.getSimpleName()));
+    }
+
+    /*
      * Check the domain method for any requirements for it to be static.
      * InstanceRequests assume instance methods on the domain type.
      */
@@ -203,12 +209,12 @@
 
     if ((isInstanceRequest || requireInstanceDomainMethods)
         && domainMethod.getModifiers().contains(Modifier.STATIC)) {
-      state.poison(checkedElement, Messages.domainMethodWrongModifier(false, domainMethod
+      state.poison(clientMethodElement, Messages.domainMethodWrongModifier(false, domainMethod
           .getSimpleName()));
     }
     if (!isInstanceRequest && requireStaticDomainMethods
         && !domainMethod.getModifiers().contains(Modifier.STATIC)) {
-      state.poison(checkedElement, Messages.domainMethodWrongModifier(true, domainMethod
+      state.poison(clientMethodElement, Messages.domainMethodWrongModifier(true, domainMethod
           .getSimpleName()));
     }
 
diff --git a/user/src/com/google/web/bindery/requestfactory/apt/Messages.java b/user/src/com/google/web/bindery/requestfactory/apt/Messages.java
index 1379596..e2b8689 100644
--- a/user/src/com/google/web/bindery/requestfactory/apt/Messages.java
+++ b/user/src/com/google/web/bindery/requestfactory/apt/Messages.java
@@ -74,6 +74,10 @@
     return "The domain type's getVersion() method must not be static";
   }
 
+  public static String domainMethodNotPublic(Object domainMethodName) {
+    return String.format("Domain method %s must be public", domainMethodName);
+  }
+
   public static String domainMethodWrongModifier(boolean expectStatic, Object domainMethodName) {
     return String.format("Found %s domain method %s when %s method required", expectStatic
         ? "instance" : "static", domainMethodName, expectStatic ? "static" : "instance");
diff --git a/user/test/com/google/web/bindery/requestfactory/apt/EntityProxyCheckDomainMapping.java b/user/test/com/google/web/bindery/requestfactory/apt/EntityProxyCheckDomainMapping.java
index 6a1ee98..445beed 100644
--- a/user/test/com/google/web/bindery/requestfactory/apt/EntityProxyCheckDomainMapping.java
+++ b/user/test/com/google/web/bindery/requestfactory/apt/EntityProxyCheckDomainMapping.java
@@ -22,7 +22,6 @@
     @Expect(method = "domainGetIdStatic"),
     @Expect(method = "domainGetVersionStatic"),
     @Expect(method = "domainFindNotStatic", args = "Domain"),
-    @Expect(method = "domainMethodWrongModifier", args = {"false", "getFoo"}),
     @Expect(method = "domainNoDefaultConstructor", args = {
         "Domain", "EntityProxyCheckDomainMapping", "RequestContext"}, warning = true)})
 @ProxyFor(EntityProxyCheckDomainMapping.Domain.class)
@@ -47,13 +46,21 @@
     public Domain findDomain(@SuppressWarnings("unused") String id) {
       return null;
     }
+
+    String getNotPublic() {
+      return null;
+    }
   }
 
+  @Expect(method = "domainMethodWrongModifier", args = {"false", "getFoo"})
   String getFoo();
 
   @Expect(method = "domainMissingMethod", args = "java.lang.String getMissingProperty()")
   String getMissingProperty();
 
+  @Expect(method = "domainMethodNotPublic", args = "getNotPublic")
+  String getNotPublic();
+
   @Expected({
       @Expect(method = "methodNoDomainPeer", args = {"java.lang.Object", "false"}, warning = true),
       @Expect(method = "untransportableType", args = "java.lang.Object")})
diff --git a/user/test/com/google/web/bindery/requestfactory/apt/RequestContextWithMismatchedInstance.java b/user/test/com/google/web/bindery/requestfactory/apt/RequestContextWithMismatchedInstance.java
index 26c428d..cffeb65 100644
--- a/user/test/com/google/web/bindery/requestfactory/apt/RequestContextWithMismatchedInstance.java
+++ b/user/test/com/google/web/bindery/requestfactory/apt/RequestContextWithMismatchedInstance.java
@@ -26,9 +26,6 @@
  * Tests Request and InstanceRequest methods bound to methods with the wrong
  * static modifier.
  */
-@Expected({
-    @Expect(method = "domainMethodWrongModifier", args = {"true", "instanceMethod"}),
-    @Expect(method = "domainMethodWrongModifier", args = {"false", "staticMethod"})})
 @Service(RequestContextWithMismatchedInstance.Domain.class)
 interface RequestContextWithMismatchedInstance extends RequestContext {
   static class Domain {
@@ -55,7 +52,9 @@
   interface Proxy extends EntityProxy {
   }
 
+  @Expect(method = "domainMethodWrongModifier", args = {"true", "instanceMethod"})
   Request<Void> instanceMethod();
 
+  @Expect(method = "domainMethodWrongModifier", args = {"false", "staticMethod"})
   InstanceRequest<Proxy, Void> staticMethod();
 }
