diff --git a/src/main/java/com/android/tools/r8/graph/DexClass.java b/src/main/java/com/android/tools/r8/graph/DexClass.java
index e454d89..e5d4a56 100644
--- a/src/main/java/com/android/tools/r8/graph/DexClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexClass.java
@@ -82,7 +82,6 @@
     virtualMethods = MoreObjects.firstNonNull(values, NO_METHODS);
   }
 
-
   public void forEachMethod(Consumer<DexEncodedMethod> consumer) {
     for (DexEncodedMethod method : directMethods()) {
       consumer.accept(method);
@@ -130,6 +129,15 @@
     staticFields = MoreObjects.firstNonNull(values, NO_FIELDS);
   }
 
+  public boolean definesStaticField(DexField field) {
+    for (DexEncodedField encodedField : staticFields()) {
+      if (encodedField.field == field) {
+        return true;
+      }
+    }
+    return false;
+  }
+
   public DexEncodedField[] instanceFields() {
     return instanceFields;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index c74a5a0..168dcf9 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -845,6 +845,13 @@
     if (code.computeNormalExitBlocks().isEmpty()) {
       return;
     }
+    DexClass clazz = appInfo.definitionFor(method.method.getHolder());
+    if (clazz == null) {
+      // TODO(67672280): Synthesized lambda classes are also optimized. However, they are not
+      // added to the AppInfo.
+      assert method.accessFlags.isSynthetic();
+      return;
+    }
     DominatorTree dominatorTree = new DominatorTree(code);
     Set<StaticPut> puts = Sets.newIdentityHashSet();
     Map<DexField, StaticPut> dominatingPuts = Maps.newIdentityHashMap();
@@ -855,7 +862,7 @@
         if (current.isStaticPut()) {
           StaticPut put = current.asStaticPut();
           DexField field = put.getField();
-          if (field.getHolder() == method.method.getHolder()) {
+          if (clazz.definesStaticField(field)) {
             if (put.inValue().isConstant()) {
               if ((field.type.isClassType() || field.type.isArrayType())
                   && put.inValue().isZero()) {
@@ -891,10 +898,6 @@
       for (StaticPut put : dominatingPuts.values()) {
         DexField field = put.getField();
         DexEncodedField encodedField = appInfo.definitionFor(field);
-        if (encodedField == null) {
-          // See b/67468748.
-          continue;
-        }
         if (field.type == dexItemFactory.stringType) {
           if (put.inValue().isConstant()) {
             if (put.inValue().isConstNumber()) {
