diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
index 43138b0..fce0237 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
@@ -1251,6 +1251,7 @@
       // method
       JMethod samMethod = new JMethod(info, interfaceMethod.getName(), innerLambdaClass,
           interfaceMethod.getType(), false, false, true, interfaceMethod.getAccess());
+      samMethod.setSynthetic();
 
       // implements the SAM, e.g. Callback.onCallback(), Runnable.run(), etc
       createLambdaSamMethod(x, interfaceMethod, info, innerLambdaClass, locals, outerField,
@@ -1850,6 +1851,8 @@
       JMethod samMethod = new JMethod(info, interfaceMethod.getName(),
           innerLambdaClass, interfaceMethod.getType(),
           false, false, true, interfaceMethod.getAccess());
+      samMethod.setSynthetic();
+
       for (JParameter origParam : interfaceMethod.getParams()) {
         samMethod.cloneParameter(origParam);
       }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java b/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java
index 02c86fb..f31c775 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/JsInteropRestrictionChecker.java
@@ -1014,13 +1014,22 @@
   }
 
   private void checkUnusableByJs(JMember member) {
-    logIfUnusableByJs(member, member instanceof JField ? "Type of" : "Return type of", member);
-
     if (member instanceof JMethod) {
-      for (JParameter parameter : ((JMethod) member).getParams()) {
+      JMethod method = (JMethod) member;
+      if (method.isSynthetic() && !method.isSyntheticAccidentalOverride()) {
+        // Do not emit warnings for synthetic methods unless they are accidental overrides.
+        return;
+      }
+
+      logIfUnusableByJs(member, "Return type of", member);
+
+      for (JParameter parameter : method.getParams()) {
         String prefix = String.format("Type of parameter '%s' in", parameter.getName());
         logIfUnusableByJs(parameter, prefix, member);
       }
+    } else {
+      // it's a field
+      logIfUnusableByJs(member, "Type of", member);
     }
   }
 
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/JsInteropRestrictionCheckerTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/JsInteropRestrictionCheckerTest.java
index 5db3102..9b8e8e7 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/JsInteropRestrictionCheckerTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/JsInteropRestrictionCheckerTest.java
@@ -2539,6 +2539,27 @@
             + " annotation to the corresponding member.");
   }
 
+  public void testUnusableByJsSyntheticMembersSucceeds() throws Exception {
+    addSnippetImport("jsinterop.annotations.JsType");
+    addSnippetImport("jsinterop.annotations.JsFunction");
+    addSnippetClassDecl(
+        "@JsFunction",
+        "public interface I {",
+        "  @SuppressWarnings(\"unusable-by-js\")",
+        "  int m(long l);",
+        "}",
+        "@JsType public static class Buggy {",
+        "  private void m() {",
+        "    I l = e -> 42;",
+        "    I mr = this::mr;",
+        "  }",
+        "  private int mr(long l) {",
+        "    return 42;",
+        "  }",
+        "}");
+    assertBuggySucceeds();
+  }
+
   private static final MockJavaResource jsFunctionInterface = new MockJavaResource(
       "test.MyJsFunctionInterface") {
     @Override
