diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
index 66ae73a..8dedd18 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
@@ -154,7 +154,8 @@
             cls ->
                 cls.hasKotlinInfo()
                     && cls.getKotlinInfo().isSyntheticClass()
-                    && cls.getKotlinInfo().asSyntheticClass().isLambda())
+                    && cls.getKotlinInfo().asSyntheticClass().isLambda()
+                    && KotlinLambdaGroupIdFactory.hasValidAnnotations(kotlin, cls))
         .sorted((a, b) -> a.type.slowCompareTo(b.type)) // Ensure stable ordering.
         .forEachOrdered(
             lambda -> {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupIdFactory.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupIdFactory.java
index 4b8290e..1c649d5 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupIdFactory.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/kotlin/KotlinLambdaGroupIdFactory.java
@@ -87,6 +87,21 @@
     return null;
   }
 
+  public static boolean hasValidAnnotations(Kotlin kotlin, DexClass lambda) {
+    if (!lambda.annotations.isEmpty()) {
+      for (DexAnnotation annotation : lambda.annotations.annotations) {
+        if (DexAnnotation.isSignatureAnnotation(annotation, kotlin.factory)) {
+          continue;
+        }
+        if (annotation.annotation.type == kotlin.metadata.kotlinMetadataType) {
+          continue;
+        }
+        return false;
+      }
+    }
+    return true;
+  }
+
   String validateAnnotations(Kotlin kotlin, DexClass lambda) throws LambdaStructureError {
     String signature = null;
     if (!lambda.annotations.isEmpty()) {
@@ -103,10 +118,12 @@
           continue;
         }
 
+        assert !hasValidAnnotations(kotlin, lambda);
         throw new LambdaStructureError(
             "unexpected annotation: " + annotation.annotation.type.toSourceString());
       }
     }
+    assert hasValidAnnotations(kotlin, lambda);
     return signature;
   }
 
