Refine @NotNull and unknown types in abstract cast function

Fixes: b/338534237
Change-Id: If64d91f33671443af6f2dd089cf98e7673569439
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java
index ff432b9..27fdb0e 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java
@@ -25,9 +25,14 @@
 
   protected static DynamicType cast(
       AppView<AppInfoWithLiveness> appView, DexType type, DynamicType dynamicType) {
-    if (dynamicType.isBottom() || dynamicType.isNotNullType() || dynamicType.isUnknown()) {
+    if (dynamicType.isBottom()) {
       return dynamicType;
     }
+    if (dynamicType.isNotNullType() || dynamicType.isUnknown()) {
+      Nullability nullability =
+          dynamicType.isNotNullType() ? Nullability.definitelyNotNull() : Nullability.maybeNull();
+      return DynamicType.create(appView, type.toTypeElement(appView, nullability));
+    }
     assert dynamicType.isDynamicTypeWithUpperBound();
     DynamicTypeWithUpperBound dynamicTypeWithUpperBound = dynamicType.asDynamicTypeWithUpperBound();
     TypeElement typeElement = type.toTypeElement(appView, dynamicType.getNullability());