diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 53f88d1..f4b3c8d 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -55,7 +55,7 @@
  */
 public final class D8 {
 
-  private static final String VERSION = "v0.1.15";
+  private static final String VERSION = "v0.1.16";
   private static final int STATUS_ERROR = 1;
 
   private D8() {}
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index f08e688..1fb04a6 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -71,7 +71,7 @@
 
 public class R8 {
 
-  private static final String VERSION = "v0.1.15";
+  private static final String VERSION = "v0.1.16";
   private final Timing timing = new Timing("R8");
   private final InternalOptions options;
 
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 3f492b5..9c79d90 100644
--- a/src/main/java/com/android/tools/r8/graph/DexClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexClass.java
@@ -81,7 +81,6 @@
     virtualMethods = MoreObjects.firstNonNull(values, NO_METHODS);
   }
 
-
   public void forEachMethod(Consumer<DexEncodedMethod> consumer) {
     for (DexEncodedMethod method : directMethods()) {
       consumer.accept(method);
@@ -119,6 +118,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 cf89455..5ca8fd1 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
@@ -663,6 +663,13 @@
     if (exit == null) {
       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;
+    }
     Set<StaticPut> puts = Sets.newIdentityHashSet();
     Map<DexField, StaticPut> dominatingPuts = Maps.newIdentityHashMap();
     for (BasicBlock block : dominatorTree.dominatorBlocks(exit)) {
@@ -672,7 +679,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().getConstInstruction().isConstNumber() &&
@@ -709,10 +716,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().getConstInstruction().isConstNumber()) {
