diff --git a/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java b/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java
index 05416df..f417d65 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/ValueMayDependOnEnvironmentAnalysis.java
@@ -20,16 +20,12 @@
 import com.android.tools.r8.ir.code.NewArrayEmpty;
 import com.android.tools.r8.ir.code.NewArrayFilledData;
 import com.android.tools.r8.ir.code.NewInstance;
-import com.android.tools.r8.ir.code.StaticGet;
 import com.android.tools.r8.ir.code.StaticPut;
 import com.android.tools.r8.ir.code.Value;
 import com.android.tools.r8.ir.optimize.info.initializer.InstanceInitializerInfo;
-import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.LongInterval;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
-import java.util.ArrayList;
-import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -119,9 +115,6 @@
       if (isNewInstanceWithoutEnvironmentDependentFields(root, assumedNotToDependOnEnvironment)) {
         return false;
       }
-      if (isAliasOfValueThatIsIndependentOfEnvironment(root, assumedNotToDependOnEnvironment)) {
-        return false;
-      }
       return true;
     } finally {
       boolean changed = visited.remove(root);
@@ -414,49 +407,4 @@
 
     return false;
   }
-
-  private boolean isAliasOfValueThatIsIndependentOfEnvironment(
-      Value value, Set<Value> assumedNotToDependOnEnvironment) {
-    // If we are inside a class initializer, and we are reading a final field of the enclosing
-    // class, then check if there is a single write to that field in the class initializer, and that
-    // the value being written into that field does not depend on the environment.
-    //
-    // The reason why we do not currently treat final fields that are written in multiple places is
-    // that the value of the field could then be dependent on the environment due to the control
-    // flow.
-    if (code.method.isClassInitializer()) {
-      assert !value.hasAliasedValue();
-      if (value.isPhi()) {
-        return false;
-      }
-      Instruction definition = value.definition;
-      if (definition.isStaticGet()) {
-        StaticGet staticGet = definition.asStaticGet();
-        DexEncodedField field = appView.appInfo().resolveField(staticGet.getField());
-        if (field != null && field.holder() == context) {
-          List<StaticPut> finalFieldPuts = computeFinalFieldPuts().get(field);
-          if (finalFieldPuts == null || finalFieldPuts.size() != 1) {
-            return false;
-          }
-          StaticPut staticPut = ListUtils.first(finalFieldPuts);
-          return !valueMayDependOnEnvironment(staticPut.value(), assumedNotToDependOnEnvironment);
-        }
-      }
-    }
-    return false;
-  }
-
-  private Map<DexEncodedField, List<StaticPut>> computeFinalFieldPuts() {
-    assert code.method.isClassInitializer();
-    if (finalFieldPuts == null) {
-      finalFieldPuts = new IdentityHashMap<>();
-      for (StaticPut staticPut : code.<StaticPut>instructions(Instruction::isStaticPut)) {
-        DexEncodedField field = appView.appInfo().resolveField(staticPut.getField());
-        if (field != null && field.holder() == context && field.isFinal()) {
-          finalFieldPuts.computeIfAbsent(field, ignore -> new ArrayList<>()).add(staticPut);
-        }
-      }
-    }
-    return finalFieldPuts;
-  }
 }
