diff --git a/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java b/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
index d8a0a50..553834c 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
@@ -64,7 +64,7 @@
     return checkFieldPut(instruction);
   }
 
-  private boolean checkFieldPut(FieldInstruction instruction) {
+  public boolean checkFieldPut(FieldInstruction instruction) {
     assert instruction.isFieldPut();
     Value value =
         instruction.isInstancePut()
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
index 40f20ed..43f8211 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/UninstantiatedTypeOptimization.java
@@ -25,8 +25,7 @@
 import com.android.tools.r8.graph.GraphLense.RewrittenPrototypeDescription.RemovedArgumentsInfo;
 import com.android.tools.r8.graph.TopDownClassHierarchyTraversal;
 import com.android.tools.r8.ir.analysis.AbstractError;
-import com.android.tools.r8.ir.analysis.type.Nullability;
-import com.android.tools.r8.ir.analysis.type.TypeLatticeElement;
+import com.android.tools.r8.ir.analysis.TypeChecker;
 import com.android.tools.r8.ir.code.BasicBlock;
 import com.android.tools.r8.ir.code.FieldInstruction;
 import com.android.tools.r8.ir.code.IRCode;
@@ -104,6 +103,7 @@
   private static final MethodSignatureEquivalence equivalence = MethodSignatureEquivalence.get();
 
   private final AppView<AppInfoWithLiveness> appView;
+  private final TypeChecker typeChecker;
 
   private int numberOfInstanceGetOrInstancePutWithNullReceiver = 0;
   private int numberOfArrayInstructionsWithNullArray = 0;
@@ -113,6 +113,7 @@
 
   public UninstantiatedTypeOptimization(AppView<AppInfoWithLiveness> appView) {
     this.appView = appView;
+    this.typeChecker = new TypeChecker(appView);
   }
 
   public GraphLense run(
@@ -484,14 +485,7 @@
 
       BasicBlock block = instruction.getBlock();
       if (instruction.isFieldPut()) {
-        Value value =
-            instruction.isInstancePut()
-                ? instruction.asInstancePut().value()
-                : instruction.asStaticPut().inValue();
-
-        TypeLatticeElement fieldLatticeType =
-            TypeLatticeElement.fromDexType(fieldType, Nullability.maybeNull(), appView);
-        if (!value.getTypeLattice().lessThanOrEqual(fieldLatticeType, appView)) {
+        if (!typeChecker.checkFieldPut(instruction)) {
           // Broken type hierarchy. See FieldTypeTest#test_brokenTypeHierarchy.
           assert appView.options().testing.allowTypeErrors;
           return;
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index e13b5c4..29d2bcf 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -597,7 +597,7 @@
 
     public boolean allowProguardRulesThatUseExtendsOrImplementsWrong = true;
     public boolean allowTypeErrors =
-        !Version.isDev() || System.getProperty("com.android.tools.r8.allowTypeErrors") != null;;
+        !Version.isDev() || System.getProperty("com.android.tools.r8.allowTypeErrors") != null;
     public boolean alwaysUsePessimisticRegisterAllocation = false;
     public boolean invertConditionals = false;
     public boolean placeExceptionalBlocksLast = false;
diff --git a/src/test/java/com/android/tools/r8/shaking/FieldTypeTest.java b/src/test/java/com/android/tools/r8/shaking/FieldTypeTest.java
index 69232b8..55f5370 100644
--- a/src/test/java/com/android/tools/r8/shaking/FieldTypeTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/FieldTypeTest.java
@@ -5,10 +5,10 @@
 
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
 import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsNot.not;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertThat;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.ToolHelper;
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index 89017e7..9ef28a8 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -93,8 +93,7 @@
               'id': 'com.numix.calculator',
               'dir': 'Calculator',
               'name': 'numix-calculator',
-              'has_instrumentation_tests': True,
-              'skip': True
+              'has_instrumentation_tests': True
           })
       ]
   }),
