Rename parameter states to value state

Bug: b/296030319
Change-Id: I117bb23c8611deb243b76d45f02f3148e5800dc5
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/BottomFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/BottomFieldState.java
index efb1342..f71be76 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/BottomFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/BottomFieldState.java
@@ -8,8 +8,8 @@
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
 import com.android.tools.r8.ir.analysis.value.AbstractValueFactory;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteParameterState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteValueState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
@@ -53,12 +53,12 @@
   public FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      NonEmptyParameterState parameterState,
+      NonEmptyValueState parameterState,
       Action onChangedAction) {
     if (parameterState.isUnknown()) {
       return unknown();
     }
-    ConcreteParameterState concreteParameterState = parameterState.asConcrete();
+    ConcreteValueState concreteParameterState = parameterState.asConcrete();
     if (field.getType().isArrayType()) {
       return ConcreteArrayTypeFieldState.create(
           concreteParameterState.getAbstractValue(appView), concreteParameterState.copyInFlow());
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteArrayTypeFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteArrayTypeFieldState.java
index 2f669dc..d8b4587 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteArrayTypeFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteArrayTypeFieldState.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReferenceTypeParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReferenceTypeValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.InFlow;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
@@ -94,7 +94,7 @@
   public FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       Action onChangedAction) {
     boolean abstractValueChanged =
         mutableJoinAbstractValue(appView, field, parameterState.getAbstractValue(appView));
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteClassTypeFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteClassTypeFieldState.java
index 9b382ba..4217f4c 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteClassTypeFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteClassTypeFieldState.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.type.DynamicType;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReferenceTypeParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReferenceTypeValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.InFlow;
 import com.android.tools.r8.optimize.argumentpropagation.utils.WideningUtils;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
@@ -117,7 +117,7 @@
   public FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       Action onChangedAction) {
     boolean abstractValueChanged =
         mutableJoinAbstractValue(appView, field, parameterState.getAbstractValue(appView));
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteFieldState.java
index 94e0afd..1605e9f 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteFieldState.java
@@ -7,9 +7,9 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.InFlow;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 import java.util.Collections;
@@ -102,12 +102,12 @@
   public FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      NonEmptyParameterState parameterState,
+      NonEmptyValueState parameterState,
       Action onChangedAction) {
     if (parameterState.isUnknown()) {
       return unknown();
     }
-    ConcreteParameterState concreteParameterState = parameterState.asConcrete();
+    ConcreteValueState concreteParameterState = parameterState.asConcrete();
     if (isReference()) {
       assert concreteParameterState.isReferenceParameter();
       return asReference()
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcretePrimitiveTypeFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcretePrimitiveTypeFieldState.java
index 875a5eb..68e767e 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcretePrimitiveTypeFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcretePrimitiveTypeFieldState.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePrimitiveTypeParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePrimitiveTypeValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.InFlow;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
@@ -88,7 +88,7 @@
   public FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      ConcretePrimitiveTypeParameterState parameterState,
+      ConcretePrimitiveTypeValueState parameterState,
       Action onChangedAction) {
     assert field.getType().isPrimitiveType();
     boolean abstractValueChanged =
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteReferenceTypeFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteReferenceTypeFieldState.java
index fad2b58..f7c99bd 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteReferenceTypeFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/ConcreteReferenceTypeFieldState.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.type.DynamicType;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReferenceTypeParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReferenceTypeValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.InFlow;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
@@ -46,6 +46,6 @@
   public abstract FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       Action onChangedAction);
 }
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/FieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/FieldState.java
index 18fb4ba..7fee282 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/FieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/FieldState.java
@@ -8,7 +8,7 @@
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
 import com.android.tools.r8.ir.analysis.value.AbstractValueFactory;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
@@ -94,6 +94,6 @@
   public abstract FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      NonEmptyParameterState parameterState,
+      NonEmptyValueState parameterState,
       Action onChangedAction);
 }
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/UnknownFieldState.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/UnknownFieldState.java
index c480bec..b4f2743 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/UnknownFieldState.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/state/UnknownFieldState.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 import java.util.function.Function;
@@ -51,7 +51,7 @@
   public FieldState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ProgramField field,
-      NonEmptyParameterState parameterState,
+      NonEmptyValueState parameterState,
       Action onChangedAction) {
     return this;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
index 3314582..0e24e5d 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/ConcreteCallSiteOptimizationInfo.java
@@ -18,8 +18,8 @@
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
 import com.android.tools.r8.ir.analysis.value.UnknownValue;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteParameterState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteValueState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceArrayMap;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
@@ -141,12 +141,12 @@
         new ConcreteCallSiteOptimizationInfo(methodState.size());
     boolean isTop = true;
     for (int argumentIndex = 0; argumentIndex < methodState.size(); argumentIndex++) {
-      ParameterState parameterState = methodState.getParameterState(argumentIndex);
+      ValueState parameterState = methodState.getParameterState(argumentIndex);
       if (parameterState.isUnknown()) {
         continue;
       }
 
-      ConcreteParameterState concreteParameterState = parameterState.asConcrete();
+      ConcreteValueState concreteParameterState = parameterState.asConcrete();
 
       // Constant propagation.
         AbstractValue abstractValue = concreteParameterState.getAbstractValue(appView);
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScanner.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScanner.java
index 0dc55d3..0eae64d 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScanner.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScanner.java
@@ -27,21 +27,21 @@
 import com.android.tools.r8.ir.code.InvokeMethod;
 import com.android.tools.r8.ir.code.InvokeMethodWithReceiver;
 import com.android.tools.r8.ir.code.Value;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteArrayTypeParameterState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteClassTypeParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteArrayTypeValueState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteClassTypeValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodStateOrBottom;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodStateOrUnknown;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePolymorphicMethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePolymorphicMethodStateOrBottom;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePrimitiveTypeParameterState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReceiverParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePrimitiveTypeValueState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteReceiverValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodParameter;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodParameterFactory;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodStateCollectionByReference;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.UnknownMethodState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.optimize.argumentpropagation.reprocessingcriteria.ArgumentPropagatorReprocessingCriteriaCollection;
 import com.android.tools.r8.optimize.argumentpropagation.reprocessingcriteria.MethodReprocessingCriteria;
 import com.android.tools.r8.optimize.argumentpropagation.reprocessingcriteria.ParameterReprocessingCriteria;
@@ -129,7 +129,7 @@
       methodState = methodState.asPolymorphic().getMethodStateForBounds(DynamicType.unknown());
     }
     if (methodState.isMonomorphic()) {
-      ParameterState parameterState =
+      ValueState parameterState =
           methodState.asMonomorphic().getParameterState(methodParameter.getIndex());
       return parameterState.isUnknown();
     }
@@ -420,7 +420,7 @@
       ProgramMethod context,
       ConcreteMonomorphicMethodStateOrBottom existingMethodState,
       DynamicType dynamicReceiverType) {
-    List<ParameterState> parameterStates = new ArrayList<>(invoke.arguments().size());
+    List<ValueState> parameterStates = new ArrayList<>(invoke.arguments().size());
 
     MethodReprocessingCriteria methodReprocessingCriteria =
         singleTarget != null
@@ -461,7 +461,7 @@
   // track the dynamic type for receivers.
   // TODO(b/190154391): Consider validating the above hypothesis by using
   //  computeParameterStateForNonReceiver() for receivers.
-  private ParameterState computeParameterStateForReceiver(
+  private ValueState computeParameterStateForReceiver(
       ProgramMethod resolvedMethod,
       DynamicType dynamicReceiverType,
       ConcreteMonomorphicMethodStateOrBottom existingMethodState,
@@ -469,24 +469,24 @@
     // Don't compute a state for this parameter if the stored state is already unknown.
     if (existingMethodState.isMonomorphic()
         && existingMethodState.asMonomorphic().getParameterState(0).isUnknown()) {
-      return ParameterState.unknown();
+      return ValueState.unknown();
     }
 
     // For receivers we only track the dynamic type. Therefore, if there is no need to track the
     // dynamic type of the receiver of the targeted method, then just return unknown.
     if (!parameterReprocessingCriteria.shouldReprocessDueToDynamicType()) {
-      return ParameterState.unknown();
+      return ValueState.unknown();
     }
 
     DynamicType widenedDynamicReceiverType =
         WideningUtils.widenDynamicReceiverType(appView, resolvedMethod, dynamicReceiverType);
     return widenedDynamicReceiverType.isUnknown()
-        ? ParameterState.unknown()
-        : new ConcreteReceiverParameterState(dynamicReceiverType);
+        ? ValueState.unknown()
+        : new ConcreteReceiverValueState(dynamicReceiverType);
   }
 
   @SuppressWarnings("UnusedVariable")
-  private ParameterState computeParameterStateForNonReceiver(
+  private ValueState computeParameterStateForNonReceiver(
       InvokeMethod invoke,
       ProgramMethod singleTarget,
       int argumentIndex,
@@ -494,7 +494,7 @@
       AbstractValueSupplier abstractValueSupplier,
       ProgramMethod context,
       ConcreteMonomorphicMethodStateOrBottom existingMethodState) {
-    ParameterState modeledState =
+    ValueState modeledState =
         modeling.modelParameterStateForArgumentToFunction(
             invoke, singleTarget, argumentIndex, argument, context);
     if (modeledState != null) {
@@ -504,7 +504,7 @@
     // Don't compute a state for this parameter if the stored state is already unknown.
     if (existingMethodState.isMonomorphic()
         && existingMethodState.asMonomorphic().getParameterState(argumentIndex).isUnknown()) {
-      return ParameterState.unknown();
+      return ValueState.unknown();
     }
 
     Value argumentRoot = argument.getAliasedValue(aliasedValueConfiguration);
@@ -522,15 +522,15 @@
           methodParameterFactory.create(
               context, argumentRoot.getDefinition().asArgument().getIndex());
       if (isMethodParameterAlreadyUnknown(forwardedParameter, context)) {
-        return ParameterState.unknown();
+        return ValueState.unknown();
       }
       if (parameterTypeElement.isClassType()) {
-        return new ConcreteClassTypeParameterState(forwardedParameter);
+        return new ConcreteClassTypeValueState(forwardedParameter);
       } else if (parameterTypeElement.isArrayType()) {
-        return new ConcreteArrayTypeParameterState(forwardedParameter);
+        return new ConcreteArrayTypeValueState(forwardedParameter);
       } else {
         assert parameterTypeElement.isPrimitiveType();
-        return new ConcretePrimitiveTypeParameterState(forwardedParameter);
+        return new ConcretePrimitiveTypeValueState(forwardedParameter);
       }
     }
 
@@ -538,8 +538,8 @@
     if (parameterTypeElement.isArrayType()) {
       Nullability nullability = argument.getType().nullability();
       return nullability.isMaybeNull()
-          ? ParameterState.unknown()
-          : new ConcreteArrayTypeParameterState(nullability);
+          ? ValueState.unknown()
+          : new ConcreteArrayTypeValueState(nullability);
     }
 
     AbstractValue abstractValue = abstractValueSupplier.getAbstractValue(argument);
@@ -551,16 +551,16 @@
       DynamicType widenedDynamicType =
           WideningUtils.widenDynamicNonReceiverType(appView, dynamicType, parameterType);
       return abstractValue.isUnknown() && widenedDynamicType.isUnknown()
-          ? ParameterState.unknown()
-          : new ConcreteClassTypeParameterState(abstractValue, widenedDynamicType);
+          ? ValueState.unknown()
+          : new ConcreteClassTypeValueState(abstractValue, widenedDynamicType);
     }
 
     // For primitive types, we only track the abstract value, thus if the abstract value is unknown,
     // we use UnknownParameterState.
     assert parameterTypeElement.isPrimitiveType();
     return abstractValue.isUnknown()
-        ? ParameterState.unknown()
-        : new ConcretePrimitiveTypeParameterState(abstractValue);
+        ? ValueState.unknown()
+        : new ConcretePrimitiveTypeValueState(abstractValue);
   }
 
   @SuppressWarnings("ReferenceEquality")
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScannerModeling.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScannerModeling.java
index 7931180..3e5e433 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScannerModeling.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorCodeScannerModeling.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.code.InvokeMethod;
 import com.android.tools.r8.ir.code.Value;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.optimize.compose.ArgumentPropagatorComposeModeling;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 
@@ -22,7 +22,7 @@
             : null;
   }
 
-  ParameterState modelParameterStateForArgumentToFunction(
+  ValueState modelParameterStateForArgumentToFunction(
       InvokeMethod invoke,
       ProgramMethod singleTarget,
       int argumentIndex,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorOptimizationInfoPopulator.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorOptimizationInfoPopulator.java
index 6b05437..fbe7a42 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorOptimizationInfoPopulator.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorOptimizationInfoPopulator.java
@@ -18,14 +18,14 @@
 import com.android.tools.r8.ir.optimize.info.ConcreteCallSiteOptimizationInfo;
 import com.android.tools.r8.ir.optimize.info.MethodOptimizationInfo;
 import com.android.tools.r8.ir.optimize.info.OptimizationFeedback;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteClassTypeParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteClassTypeValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodStateCollectionByReference;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.StateCloner;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.optimize.argumentpropagation.utils.WideningUtils;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.InternalOptions;
@@ -158,13 +158,13 @@
     }
 
     // Verify that there is no parameter with bottom info.
-    assert monomorphicMethodState.getParameterStates().stream().noneMatch(ParameterState::isBottom);
+    assert monomorphicMethodState.getParameterStates().stream().noneMatch(ValueState::isBottom);
 
     // Verify that all in-parameter information has been pruned by the InParameterFlowPropagator.
     assert monomorphicMethodState.getParameterStates().stream()
-        .filter(ParameterState::isConcrete)
-        .map(ParameterState::asConcrete)
-        .noneMatch(ConcreteParameterState::hasInFlow);
+        .filter(ValueState::isConcrete)
+        .map(ValueState::asConcrete)
+        .noneMatch(ConcreteValueState::hasInFlow);
 
     if (monomorphicMethodState.size() > 0) {
       getSimpleFeedback()
@@ -182,7 +182,7 @@
     // arguments.
     MethodOptimizationInfo optimizationInfo = method.getOptimizationInfo();
     if (optimizationInfo.returnsArgument()) {
-      ParameterState returnedArgumentState =
+      ValueState returnedArgumentState =
           monomorphicMethodState.getParameterState(optimizationInfo.getReturnedArgument());
       OptimizationFeedback.getSimple()
           .methodReturnsAbstractValue(
@@ -199,7 +199,7 @@
 
     int numberOfArguments = method.getDefinition().getNumberOfArguments();
     boolean isReturnValueUsed;
-    List<ParameterState> parameterStates;
+    List<ValueState> parameterStates;
     if (methodState.isMonomorphic()) {
       ConcreteMonomorphicMethodState monomorphicMethodState = methodState.asMonomorphic();
       isReturnValueUsed = monomorphicMethodState.isReturnValueUsed();
@@ -207,10 +207,9 @@
     } else {
       assert methodState.isUnknown();
       isReturnValueUsed = true;
-      parameterStates =
-          ListUtils.newInitializedArrayList(numberOfArguments, ParameterState.unknown());
+      parameterStates = ListUtils.newInitializedArrayList(numberOfArguments, ValueState.unknown());
     }
-    List<ParameterState> narrowedParameterStates =
+    List<ValueState> narrowedParameterStates =
         ListUtils.mapOrElse(
             parameterStates,
             (argumentIndex, parameterState) -> {
@@ -221,7 +220,7 @@
               if (!argumentType.isAlwaysNull(appView)) {
                 return parameterState;
               }
-              return new ConcreteClassTypeParameterState(
+              return new ConcreteClassTypeValueState(
                   appView.abstractValueFactory().createNullValue(argumentType),
                   DynamicType.definitelyNull());
             },
@@ -236,8 +235,7 @@
     for (int argumentIndex = 0;
         argumentIndex < methodState.getParameterStates().size();
         argumentIndex++) {
-      ConcreteParameterState parameterState =
-          methodState.getParameterState(argumentIndex).asConcrete();
+      ConcreteValueState parameterState = methodState.getParameterState(argumentIndex).asConcrete();
       if (parameterState == null || !parameterState.isClassParameter()) {
         continue;
       }
@@ -248,7 +246,7 @@
             argumentIndex,
             parameterState.mutableJoin(
                 appView,
-                new ConcreteClassTypeParameterState(AbstractValue.bottom(), DynamicType.unknown()),
+                new ConcreteClassTypeValueState(AbstractValue.bottom(), DynamicType.unknown()),
                 staticType,
                 StateCloner.getIdentity()));
       }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomArrayTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomArrayTypeValueState.java
similarity index 74%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomArrayTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomArrayTypeValueState.java
index 6eca890..bf1ba8b 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomArrayTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomArrayTypeValueState.java
@@ -12,20 +12,20 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
-public class BottomArrayTypeParameterState extends BottomParameterState {
+public class BottomArrayTypeValueState extends BottomValueState {
 
-  private static final BottomArrayTypeParameterState INSTANCE = new BottomArrayTypeParameterState();
+  private static final BottomArrayTypeValueState INSTANCE = new BottomArrayTypeValueState();
 
-  private BottomArrayTypeParameterState() {}
+  private BottomArrayTypeValueState() {}
 
-  public static BottomArrayTypeParameterState get() {
+  public static BottomArrayTypeValueState get() {
     return INSTANCE;
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction) {
@@ -37,7 +37,7 @@
     }
     assert parameterState.isConcrete();
     assert parameterState.asConcrete().isReferenceParameter();
-    ConcreteReferenceTypeParameterState concreteParameterState =
+    ConcreteReferenceTypeValueState concreteParameterState =
         parameterState.asConcrete().asReferenceParameter();
     if (concreteParameterState.isArrayParameter()) {
       return cloner.mutableCopy(concreteParameterState);
@@ -46,11 +46,11 @@
     if (nullability.isMaybeNull()) {
       return unknown();
     }
-    return new ConcreteArrayTypeParameterState(nullability, concreteParameterState.copyInFlow());
+    return new ConcreteArrayTypeValueState(nullability, concreteParameterState.copyInFlow());
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
@@ -62,7 +62,7 @@
       if (nullability.isUnknown()) {
         return unknown();
       }
-      return new ConcreteArrayTypeParameterState(nullability, classFieldState.copyInFlow());
+      return new ConcreteArrayTypeValueState(nullability, classFieldState.copyInFlow());
     }
     return unknown();
   }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomClassTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomClassTypeValueState.java
similarity index 81%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomClassTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomClassTypeValueState.java
index a0e8525..df28567 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomClassTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomClassTypeValueState.java
@@ -14,20 +14,20 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
-public class BottomClassTypeParameterState extends BottomParameterState {
+public class BottomClassTypeValueState extends BottomValueState {
 
-  private static final BottomClassTypeParameterState INSTANCE = new BottomClassTypeParameterState();
+  private static final BottomClassTypeValueState INSTANCE = new BottomClassTypeValueState();
 
-  private BottomClassTypeParameterState() {}
+  private BottomClassTypeValueState() {}
 
-  public static BottomClassTypeParameterState get() {
+  public static BottomClassTypeValueState get() {
     return INSTANCE;
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction) {
@@ -39,7 +39,7 @@
     }
     assert parameterState.isConcrete();
     assert parameterState.asConcrete().isReferenceParameter();
-    ConcreteReferenceTypeParameterState concreteParameterState =
+    ConcreteReferenceTypeValueState concreteParameterState =
         parameterState.asConcrete().asReferenceParameter();
     AbstractValue abstractValue = concreteParameterState.getAbstractValue(appView);
     DynamicType dynamicType = concreteParameterState.getDynamicType();
@@ -50,12 +50,12 @@
     }
     return abstractValue.isUnknown() && widenedDynamicType.isUnknown()
         ? unknown()
-        : new ConcreteClassTypeParameterState(
+        : new ConcreteClassTypeValueState(
             abstractValue, widenedDynamicType, concreteParameterState.copyInFlow());
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
@@ -63,7 +63,7 @@
     ConcreteReferenceTypeFieldState referenceFieldState = fieldState.asReference();
     AbstractValue abstractValue = referenceFieldState.getAbstractValue();
     DynamicType dynamicType = referenceFieldState.getDynamicType();
-    return new ConcreteClassTypeParameterState(
+    return new ConcreteClassTypeValueState(
         abstractValue, dynamicType, referenceFieldState.copyInFlow());
   }
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java
similarity index 73%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java
index 308163a..e1da2ea 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomPrimitiveTypeValueState.java
@@ -10,21 +10,20 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
-public class BottomPrimitiveTypeParameterState extends BottomParameterState {
+public class BottomPrimitiveTypeValueState extends BottomValueState {
 
-  private static final BottomPrimitiveTypeParameterState INSTANCE =
-      new BottomPrimitiveTypeParameterState();
+  private static final BottomPrimitiveTypeValueState INSTANCE = new BottomPrimitiveTypeValueState();
 
-  private BottomPrimitiveTypeParameterState() {}
+  private BottomPrimitiveTypeValueState() {}
 
-  public static BottomPrimitiveTypeParameterState get() {
+  public static BottomPrimitiveTypeValueState get() {
     return INSTANCE;
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction) {
@@ -41,12 +40,12 @@
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
       Action onChangedAction) {
-    return new ConcretePrimitiveTypeParameterState(
+    return new ConcretePrimitiveTypeValueState(
         fieldState.getAbstractValue(), fieldState.copyInFlow());
   }
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomReceiverParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomReceiverValueState.java
similarity index 76%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomReceiverParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomReceiverValueState.java
index 7ba970d..de17523 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomReceiverParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomReceiverValueState.java
@@ -13,20 +13,20 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
-public class BottomReceiverParameterState extends BottomParameterState {
+public class BottomReceiverValueState extends BottomValueState {
 
-  private static final BottomReceiverParameterState INSTANCE = new BottomReceiverParameterState();
+  private static final BottomReceiverValueState INSTANCE = new BottomReceiverValueState();
 
-  private BottomReceiverParameterState() {}
+  private BottomReceiverValueState() {}
 
-  public static BottomReceiverParameterState get() {
+  public static BottomReceiverValueState get() {
     return INSTANCE;
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction) {
@@ -38,7 +38,7 @@
     }
     assert parameterState.isConcrete();
     assert parameterState.asConcrete().isReferenceParameter();
-    ConcreteReferenceTypeParameterState concreteParameterState =
+    ConcreteReferenceTypeValueState concreteParameterState =
         parameterState.asConcrete().asReferenceParameter();
     if (concreteParameterState.isReceiverParameter()) {
       return cloner.mutableCopy(concreteParameterState);
@@ -47,11 +47,11 @@
     if (dynamicType.isUnknown()) {
       return unknown();
     }
-    return new ConcreteReceiverParameterState(dynamicType, concreteParameterState.copyInFlow());
+    return new ConcreteReceiverValueState(dynamicType, concreteParameterState.copyInFlow());
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
@@ -64,7 +64,7 @@
         return unknown();
       }
       DynamicType nonNullDynamicType = dynamicType.withNullability(Nullability.definitelyNotNull());
-      return new ConcreteReceiverParameterState(nonNullDynamicType, classFieldState.copyInFlow());
+      return new ConcreteReceiverValueState(nonNullDynamicType, classFieldState.copyInFlow());
     }
     return unknown();
   }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomValueState.java
similarity index 82%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomValueState.java
index a1a3908..bcd03fc 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/BottomValueState.java
@@ -8,9 +8,9 @@
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 
-public abstract class BottomParameterState extends ParameterState {
+public abstract class BottomValueState extends ValueState {
 
-  BottomParameterState() {}
+  BottomValueState() {}
 
   @Override
   public final AbstractValue getAbstractValue(AppView<AppInfoWithLiveness> appView) {
@@ -23,7 +23,7 @@
   }
 
   @Override
-  public final ParameterState mutableCopy() {
+  public final ValueState mutableCopy() {
     return this;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteArrayTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteArrayTypeValueState.java
similarity index 83%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteArrayTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteArrayTypeValueState.java
index b2a1d0d..6775bf4 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteArrayTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteArrayTypeValueState.java
@@ -16,19 +16,19 @@
 import java.util.Collections;
 import java.util.Set;
 
-public class ConcreteArrayTypeParameterState extends ConcreteReferenceTypeParameterState {
+public class ConcreteArrayTypeValueState extends ConcreteReferenceTypeValueState {
 
   private Nullability nullability;
 
-  public ConcreteArrayTypeParameterState(InFlow inFlow) {
+  public ConcreteArrayTypeValueState(InFlow inFlow) {
     this(Nullability.bottom(), SetUtils.newHashSet(inFlow));
   }
 
-  public ConcreteArrayTypeParameterState(Nullability nullability) {
+  public ConcreteArrayTypeValueState(Nullability nullability) {
     this(nullability, Collections.emptySet());
   }
 
-  public ConcreteArrayTypeParameterState(Nullability nullability, Set<InFlow> inFlow) {
+  public ConcreteArrayTypeValueState(Nullability nullability, Set<InFlow> inFlow) {
     super(inFlow);
     this.nullability = nullability;
     assert !isEffectivelyBottom() : "Must use BottomArrayTypeParameterState instead";
@@ -36,7 +36,7 @@
   }
 
   @Override
-  public ParameterState clearInFlow() {
+  public ValueState clearInFlow() {
     if (hasInFlow()) {
       if (nullability.isBottom()) {
         return bottomArrayTypeParameter();
@@ -76,7 +76,7 @@
   }
 
   @Override
-  public ConcreteArrayTypeParameterState asArrayParameter() {
+  public ConcreteArrayTypeValueState asArrayParameter() {
     return this;
   }
 
@@ -91,14 +91,14 @@
   }
 
   @Override
-  public ParameterState mutableCopy() {
-    return new ConcreteArrayTypeParameterState(nullability, copyInFlow());
+  public ValueState mutableCopy() {
+    return new ConcreteArrayTypeValueState(nullability, copyInFlow());
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       DexType parameterType,
       Action onChangedAction) {
     assert parameterType.isArrayType();
@@ -118,7 +118,7 @@
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteReferenceTypeFieldState fieldState,
       DexType parameterType,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteClassTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteClassTypeValueState.java
similarity index 88%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteClassTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteClassTypeValueState.java
index 61794d5..4366388 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteClassTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteClassTypeValueState.java
@@ -17,20 +17,20 @@
 import java.util.Collections;
 import java.util.Set;
 
-public class ConcreteClassTypeParameterState extends ConcreteReferenceTypeParameterState {
+public class ConcreteClassTypeValueState extends ConcreteReferenceTypeValueState {
 
   private AbstractValue abstractValue;
   private DynamicType dynamicType;
 
-  public ConcreteClassTypeParameterState(InFlow inFlow) {
+  public ConcreteClassTypeValueState(InFlow inFlow) {
     this(AbstractValue.bottom(), DynamicType.bottom(), SetUtils.newHashSet(inFlow));
   }
 
-  public ConcreteClassTypeParameterState(AbstractValue abstractValue, DynamicType dynamicType) {
+  public ConcreteClassTypeValueState(AbstractValue abstractValue, DynamicType dynamicType) {
     this(abstractValue, dynamicType, Collections.emptySet());
   }
 
-  public ConcreteClassTypeParameterState(
+  public ConcreteClassTypeValueState(
       AbstractValue abstractValue, DynamicType dynamicType, Set<InFlow> inFlow) {
     super(inFlow);
     this.abstractValue = abstractValue;
@@ -40,7 +40,7 @@
   }
 
   @Override
-  public ParameterState clearInFlow() {
+  public ValueState clearInFlow() {
     if (hasInFlow()) {
       if (abstractValue.isBottom()) {
         assert dynamicType.isBottom();
@@ -82,7 +82,7 @@
   }
 
   @Override
-  public ConcreteClassTypeParameterState asClassParameter() {
+  public ConcreteClassTypeValueState asClassParameter() {
     return this;
   }
 
@@ -97,14 +97,14 @@
   }
 
   @Override
-  public ParameterState mutableCopy() {
-    return new ConcreteClassTypeParameterState(abstractValue, dynamicType, copyInFlow());
+  public ValueState mutableCopy() {
+    return new ConcreteClassTypeValueState(abstractValue, dynamicType, copyInFlow());
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       DexType parameterType,
       Action onChangedAction) {
     assert parameterType.isClassType();
@@ -126,7 +126,7 @@
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteReferenceTypeFieldState fieldState,
       DexType parameterType,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteMonomorphicMethodState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteMonomorphicMethodState.java
index e730d74..7f0b954 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteMonomorphicMethodState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteMonomorphicMethodState.java
@@ -17,10 +17,10 @@
     implements ConcreteMonomorphicMethodStateOrBottom, ConcreteMonomorphicMethodStateOrUnknown {
 
   boolean isReturnValueUsed;
-  List<ParameterState> parameterStates;
+  List<ValueState> parameterStates;
 
   public ConcreteMonomorphicMethodState(
-      boolean isReturnValueUsed, List<ParameterState> parameterStates) {
+      boolean isReturnValueUsed, List<ValueState> parameterStates) {
     assert Streams.stream(Iterables.skip(parameterStates, 1))
         .noneMatch(x -> x.isConcrete() && x.asConcrete().isReceiverParameter());
     this.isReturnValueUsed = isReturnValueUsed;
@@ -29,17 +29,17 @@
   }
 
   public static ConcreteMonomorphicMethodStateOrUnknown create(
-      boolean isReturnValueUsed, List<ParameterState> parameterStates) {
+      boolean isReturnValueUsed, List<ValueState> parameterStates) {
     return isEffectivelyUnknown(isReturnValueUsed, parameterStates)
         ? unknown()
         : new ConcreteMonomorphicMethodState(isReturnValueUsed, parameterStates);
   }
 
-  public ParameterState getParameterState(int index) {
+  public ValueState getParameterState(int index) {
     return parameterStates.get(index);
   }
 
-  public List<ParameterState> getParameterStates() {
+  public List<ValueState> getParameterStates() {
     return parameterStates;
   }
 
@@ -48,7 +48,7 @@
   }
 
   public boolean isEffectivelyBottom() {
-    return Iterables.any(parameterStates, ParameterState::isBottom);
+    return Iterables.any(parameterStates, ValueState::isBottom);
   }
 
   public boolean isEffectivelyUnknown() {
@@ -56,14 +56,14 @@
   }
 
   private static boolean isEffectivelyUnknown(
-      boolean isReturnValueUsed, List<ParameterState> parameterStates) {
-    return isReturnValueUsed && Iterables.all(parameterStates, ParameterState::isUnknown);
+      boolean isReturnValueUsed, List<ValueState> parameterStates) {
+    return isReturnValueUsed && Iterables.all(parameterStates, ValueState::isUnknown);
   }
 
   @Override
   public ConcreteMonomorphicMethodState mutableCopy() {
-    List<ParameterState> copiedParametersStates = new ArrayList<>(size());
-    for (ParameterState parameterState : getParameterStates()) {
+    List<ValueState> copiedParametersStates = new ArrayList<>(size());
+    for (ValueState parameterState : getParameterStates()) {
       copiedParametersStates.add(parameterState.mutableCopy());
     }
     return new ConcreteMonomorphicMethodState(isReturnValueUsed, copiedParametersStates);
@@ -86,8 +86,8 @@
     int argumentIndex = 0;
     if (size() > methodSignature.getArity()) {
       assert size() == methodSignature.getArity() + 1;
-      ParameterState parameterState = parameterStates.get(0);
-      ParameterState otherParameterState = methodState.parameterStates.get(0);
+      ValueState parameterState = parameterStates.get(0);
+      ValueState otherParameterState = methodState.parameterStates.get(0);
       DexType parameterType = null;
       parameterStates.set(
           0, parameterState.mutableJoin(appView, otherParameterState, parameterType, cloner));
@@ -95,8 +95,8 @@
     }
 
     for (int parameterIndex = 0; argumentIndex < size(); argumentIndex++, parameterIndex++) {
-      ParameterState parameterState = parameterStates.get(argumentIndex);
-      ParameterState otherParameterState = methodState.parameterStates.get(argumentIndex);
+      ValueState parameterState = parameterStates.get(argumentIndex);
+      ValueState otherParameterState = methodState.parameterStates.get(argumentIndex);
       DexType parameterType = methodSignature.getParameter(parameterIndex);
       parameterStates.set(
           argumentIndex,
@@ -123,7 +123,7 @@
     return this;
   }
 
-  public void setParameterState(int index, ParameterState parameterState) {
+  public void setParameterState(int index, ValueState parameterState) {
     assert index == 0
         || !parameterState.isConcrete()
         || !parameterState.asConcrete().isReceiverParameter();
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcretePrimitiveTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcretePrimitiveTypeValueState.java
similarity index 83%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcretePrimitiveTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcretePrimitiveTypeValueState.java
index 9e9ea03..37686ed 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcretePrimitiveTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcretePrimitiveTypeValueState.java
@@ -14,27 +14,27 @@
 import java.util.Collections;
 import java.util.Set;
 
-public class ConcretePrimitiveTypeParameterState extends ConcreteParameterState {
+public class ConcretePrimitiveTypeValueState extends ConcreteValueState {
 
   private AbstractValue abstractValue;
 
-  public ConcretePrimitiveTypeParameterState(AbstractValue abstractValue) {
+  public ConcretePrimitiveTypeValueState(AbstractValue abstractValue) {
     this(abstractValue, Collections.emptySet());
   }
 
-  public ConcretePrimitiveTypeParameterState(AbstractValue abstractValue, Set<InFlow> inFlow) {
+  public ConcretePrimitiveTypeValueState(AbstractValue abstractValue, Set<InFlow> inFlow) {
     super(inFlow);
     this.abstractValue = abstractValue;
     assert !isEffectivelyBottom() : "Must use BottomPrimitiveTypeParameterState instead";
     assert !isEffectivelyUnknown() : "Must use UnknownParameterState instead";
   }
 
-  public ConcretePrimitiveTypeParameterState(InFlow inFlow) {
+  public ConcretePrimitiveTypeValueState(InFlow inFlow) {
     this(AbstractValue.bottom(), SetUtils.newHashSet(inFlow));
   }
 
   @Override
-  public ParameterState clearInFlow() {
+  public ValueState clearInFlow() {
     if (hasInFlow()) {
       if (abstractValue.isBottom()) {
         return bottomPrimitiveTypeParameter();
@@ -46,13 +46,13 @@
   }
 
   @Override
-  public ParameterState mutableCopy() {
-    return new ConcretePrimitiveTypeParameterState(abstractValue, copyInFlow());
+  public ValueState mutableCopy() {
+    return new ConcretePrimitiveTypeValueState(abstractValue, copyInFlow());
   }
 
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ConcretePrimitiveTypeParameterState parameterState,
+      ConcretePrimitiveTypeValueState parameterState,
       DexType parameterType,
       Action onChangedAction) {
     assert parameterType.isPrimitiveType();
@@ -71,7 +71,7 @@
     return this;
   }
 
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcretePrimitiveTypeFieldState fieldState,
       DexType parameterType,
@@ -134,7 +134,7 @@
   }
 
   @Override
-  public ConcretePrimitiveTypeParameterState asPrimitiveParameter() {
+  public ConcretePrimitiveTypeValueState asPrimitiveParameter() {
     return this;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReceiverParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReceiverValueState.java
similarity index 87%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReceiverParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReceiverValueState.java
index 4d23589..d5721d9 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReceiverParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReceiverValueState.java
@@ -16,15 +16,15 @@
 import java.util.Collections;
 import java.util.Set;
 
-public class ConcreteReceiverParameterState extends ConcreteReferenceTypeParameterState {
+public class ConcreteReceiverValueState extends ConcreteReferenceTypeValueState {
 
   private DynamicType dynamicType;
 
-  public ConcreteReceiverParameterState(DynamicType dynamicType) {
+  public ConcreteReceiverValueState(DynamicType dynamicType) {
     this(dynamicType, Collections.emptySet());
   }
 
-  public ConcreteReceiverParameterState(DynamicType dynamicType, Set<InFlow> inFlow) {
+  public ConcreteReceiverValueState(DynamicType dynamicType, Set<InFlow> inFlow) {
     super(inFlow);
     this.dynamicType = dynamicType;
     assert !isEffectivelyBottom() : "Must use BottomReceiverParameterState instead";
@@ -32,7 +32,7 @@
   }
 
   @Override
-  public ParameterState clearInFlow() {
+  public ValueState clearInFlow() {
     if (hasInFlow()) {
       if (dynamicType.isBottom()) {
         return bottomReceiverParameter();
@@ -79,19 +79,19 @@
   }
 
   @Override
-  public ConcreteReceiverParameterState asReceiverParameter() {
+  public ConcreteReceiverValueState asReceiverParameter() {
     return this;
   }
 
   @Override
-  public ParameterState mutableCopy() {
-    return new ConcreteReceiverParameterState(dynamicType, copyInFlow());
+  public ValueState mutableCopy() {
+    return new ConcreteReceiverValueState(dynamicType, copyInFlow());
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       DexType parameterType,
       Action onChangedAction) {
     // TODO(b/190154391): Always take in the static type as an argument, and unset the dynamic type
@@ -113,7 +113,7 @@
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteReferenceTypeFieldState fieldState,
       DexType parameterType,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java
similarity index 76%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java
index 4b17ea7..dd23935 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteReferenceTypeValueState.java
@@ -13,9 +13,9 @@
 import com.android.tools.r8.utils.Action;
 import java.util.Set;
 
-public abstract class ConcreteReferenceTypeParameterState extends ConcreteParameterState {
+public abstract class ConcreteReferenceTypeValueState extends ConcreteValueState {
 
-  ConcreteReferenceTypeParameterState(Set<InFlow> inFlow) {
+  ConcreteReferenceTypeValueState(Set<InFlow> inFlow) {
     super(inFlow);
   }
 
@@ -29,17 +29,17 @@
   }
 
   @Override
-  public ConcreteReferenceTypeParameterState asReferenceParameter() {
+  public ConcreteReferenceTypeValueState asReferenceParameter() {
     return this;
   }
 
-  public abstract ParameterState mutableJoin(
+  public abstract ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ConcreteReferenceTypeParameterState parameterState,
+      ConcreteReferenceTypeValueState parameterState,
       DexType parameterType,
       Action onChangedAction);
 
-  public abstract ParameterState mutableJoin(
+  public abstract ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteReferenceTypeFieldState fieldState,
       DexType parameterType,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteValueState.java
similarity index 82%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteValueState.java
index a342453..2c7e129 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ConcreteValueState.java
@@ -13,7 +13,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-public abstract class ConcreteParameterState extends NonEmptyParameterState {
+public abstract class ConcreteValueState extends NonEmptyValueState {
 
   public enum ConcreteParameterStateKind {
     ARRAY,
@@ -24,11 +24,11 @@
 
   private Set<InFlow> inFlow;
 
-  ConcreteParameterState(Set<InFlow> inFlow) {
+  ConcreteValueState(Set<InFlow> inFlow) {
     this.inFlow = inFlow;
   }
 
-  public abstract ParameterState clearInFlow();
+  public abstract ValueState clearInFlow();
 
   void internalClearInFlow() {
     inFlow = Collections.emptySet();
@@ -57,7 +57,7 @@
     return false;
   }
 
-  public ConcreteArrayTypeParameterState asArrayParameter() {
+  public ConcreteArrayTypeValueState asArrayParameter() {
     return null;
   }
 
@@ -65,7 +65,7 @@
     return false;
   }
 
-  public ConcreteClassTypeParameterState asClassParameter() {
+  public ConcreteClassTypeValueState asClassParameter() {
     return null;
   }
 
@@ -77,7 +77,7 @@
     return false;
   }
 
-  public ConcretePrimitiveTypeParameterState asPrimitiveParameter() {
+  public ConcretePrimitiveTypeValueState asPrimitiveParameter() {
     return null;
   }
 
@@ -85,7 +85,7 @@
     return false;
   }
 
-  public ConcreteReceiverParameterState asReceiverParameter() {
+  public ConcreteReceiverValueState asReceiverParameter() {
     return null;
   }
 
@@ -93,7 +93,7 @@
     return false;
   }
 
-  public ConcreteReferenceTypeParameterState asReferenceParameter() {
+  public ConcreteReferenceTypeValueState asReferenceParameter() {
     return null;
   }
 
@@ -103,14 +103,14 @@
   }
 
   @Override
-  public ConcreteParameterState asConcrete() {
+  public ConcreteValueState asConcrete() {
     return this;
   }
 
   @Override
-  public final ParameterState mutableJoin(
+  public final ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction) {
@@ -120,7 +120,7 @@
     if (parameterState.isUnknown()) {
       return parameterState;
     }
-    ConcreteParameterState concreteParameterState = parameterState.asConcrete();
+    ConcreteValueState concreteParameterState = parameterState.asConcrete();
     if (isReferenceParameter()) {
       assert concreteParameterState.isReferenceParameter();
       return asReferenceParameter()
@@ -136,7 +136,7 @@
   }
 
   @Override
-  public final ParameterState mutableJoin(
+  public final ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
@@ -150,7 +150,7 @@
         .mutableJoin(appView, fieldState.asPrimitive(), parameterType, onChangedAction);
   }
 
-  boolean mutableJoinInFlow(ConcreteParameterState parameterState) {
+  boolean mutableJoinInFlow(ConcreteValueState parameterState) {
     return mutableJoinInFlow(parameterState.getInFlow());
   }
 
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/NonEmptyParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/NonEmptyValueState.java
similarity index 73%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/NonEmptyParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/NonEmptyValueState.java
index 68e0842..4d03f35 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/NonEmptyParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/NonEmptyValueState.java
@@ -4,10 +4,10 @@
 
 package com.android.tools.r8.optimize.argumentpropagation.codescanner;
 
-public abstract class NonEmptyParameterState extends ParameterState {
+public abstract class NonEmptyValueState extends ValueState {
 
   @Override
-  public NonEmptyParameterState asNonEmpty() {
+  public NonEmptyValueState asNonEmpty() {
     return this;
   }
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/StateCloner.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/StateCloner.java
index 6a2e941..6843b58 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/StateCloner.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/StateCloner.java
@@ -28,7 +28,7 @@
         }
 
         @Override
-        public ParameterState mutableCopy(ParameterState parameterState) {
+        public ValueState mutableCopy(ValueState parameterState) {
           return parameterState.mutableCopy();
         }
       };
@@ -41,7 +41,7 @@
         }
 
         @Override
-        public ParameterState mutableCopy(ParameterState parameterState) {
+        public ValueState mutableCopy(ValueState parameterState) {
           return parameterState;
         }
       };
@@ -56,5 +56,5 @@
 
   public abstract MethodState mutableCopy(MethodState methodState);
 
-  public abstract ParameterState mutableCopy(ParameterState parameterState);
+  public abstract ValueState mutableCopy(ValueState parameterState);
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/UnknownParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/UnknownValueState.java
similarity index 75%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/UnknownParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/UnknownValueState.java
index 794db40..eb59e78 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/UnknownParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/UnknownValueState.java
@@ -11,13 +11,13 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
-public class UnknownParameterState extends NonEmptyParameterState {
+public class UnknownValueState extends NonEmptyValueState {
 
-  private static final UnknownParameterState INSTANCE = new UnknownParameterState();
+  private static final UnknownValueState INSTANCE = new UnknownValueState();
 
-  private UnknownParameterState() {}
+  private UnknownValueState() {}
 
-  public static UnknownParameterState get() {
+  public static UnknownValueState get() {
     return INSTANCE;
   }
 
@@ -32,14 +32,14 @@
   }
 
   @Override
-  public ParameterState mutableCopy() {
+  public ValueState mutableCopy() {
     return this;
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction) {
@@ -47,7 +47,7 @@
   }
 
   @Override
-  public ParameterState mutableJoin(
+  public ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ParameterState.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java
similarity index 60%
rename from src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ParameterState.java
rename to src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java
index 8f452f3..1a6e570 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ParameterState.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/codescanner/ValueState.java
@@ -11,26 +11,26 @@
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
 
-public abstract class ParameterState {
+public abstract class ValueState {
 
-  public static BottomParameterState bottomArrayTypeParameter() {
-    return BottomArrayTypeParameterState.get();
+  public static BottomValueState bottomArrayTypeParameter() {
+    return BottomArrayTypeValueState.get();
   }
 
-  public static BottomParameterState bottomClassTypeParameter() {
-    return BottomClassTypeParameterState.get();
+  public static BottomValueState bottomClassTypeParameter() {
+    return BottomClassTypeValueState.get();
   }
 
-  public static BottomParameterState bottomPrimitiveTypeParameter() {
-    return BottomPrimitiveTypeParameterState.get();
+  public static BottomValueState bottomPrimitiveTypeParameter() {
+    return BottomPrimitiveTypeValueState.get();
   }
 
-  public static BottomParameterState bottomReceiverParameter() {
-    return BottomReceiverParameterState.get();
+  public static BottomValueState bottomReceiverParameter() {
+    return BottomReceiverValueState.get();
   }
 
-  public static UnknownParameterState unknown() {
-    return UnknownParameterState.get();
+  public static UnknownValueState unknown() {
+    return UnknownValueState.get();
   }
 
   public abstract AbstractValue getAbstractValue(AppView<AppInfoWithLiveness> appView);
@@ -43,11 +43,11 @@
     return false;
   }
 
-  public ConcreteParameterState asConcrete() {
+  public ConcreteValueState asConcrete() {
     return null;
   }
 
-  public NonEmptyParameterState asNonEmpty() {
+  public NonEmptyValueState asNonEmpty() {
     return null;
   }
 
@@ -55,24 +55,24 @@
     return false;
   }
 
-  public abstract ParameterState mutableCopy();
+  public abstract ValueState mutableCopy();
 
-  public final ParameterState mutableJoin(
+  public final ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner) {
     return mutableJoin(appView, parameterState, parameterType, cloner, Action.empty());
   }
 
-  public abstract ParameterState mutableJoin(
+  public abstract ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
-      ParameterState parameterState,
+      ValueState parameterState,
       DexType parameterType,
       StateCloner cloner,
       Action onChangedAction);
 
-  public abstract ParameterState mutableJoin(
+  public abstract ValueState mutableJoin(
       AppView<AppInfoWithLiveness> appView,
       ConcreteFieldState fieldState,
       DexType parameterType,
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InParameterFlowPropagator.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InParameterFlowPropagator.java
index deae78e..c76d830 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InParameterFlowPropagator.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/InParameterFlowPropagator.java
@@ -16,14 +16,14 @@
 import com.android.tools.r8.ir.conversion.IRConverter;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.InFlow;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodParameter;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodStateCollectionByReference;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyParameterState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.NonEmptyValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.StateCloner;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.optimize.argumentpropagation.utils.BidirectedGraph;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.Action;
@@ -105,13 +105,13 @@
 
   private void propagate(
       ParameterNode parameterNode, Consumer<ParameterNode> affectedNodeConsumer) {
-    ParameterState parameterState = parameterNode.getState();
+    ValueState parameterState = parameterNode.getState();
     if (parameterState.isBottom()) {
       return;
     }
     List<ParameterNode> newlyUnknownParameterNodes = new ArrayList<>();
     for (ParameterNode successorNode : parameterNode.getSuccessors()) {
-      ParameterState newParameterState =
+      ValueState newParameterState =
           successorNode.addState(
               appView,
               parameterState.asNonEmpty(),
@@ -184,9 +184,9 @@
 
       // Add nodes for the parameters for which we have non-trivial information.
       ConcreteMonomorphicMethodState monomorphicMethodState = methodState.asMonomorphic();
-      List<ParameterState> parameterStates = monomorphicMethodState.getParameterStates();
+      List<ValueState> parameterStates = monomorphicMethodState.getParameterStates();
       for (int parameterIndex = 0; parameterIndex < parameterStates.size(); parameterIndex++) {
-        ParameterState parameterState = parameterStates.get(parameterIndex);
+        ValueState parameterState = parameterStates.get(parameterIndex);
         add(method, parameterIndex, monomorphicMethodState, parameterState);
       }
     }
@@ -195,14 +195,14 @@
         ProgramMethod method,
         int parameterIndex,
         ConcreteMonomorphicMethodState methodState,
-        ParameterState parameterState) {
+        ValueState parameterState) {
       // No need to create nodes for parameters with no in-parameters and parameters we don't know
       // anything about.
       if (parameterState.isBottom() || parameterState.isUnknown()) {
         return;
       }
 
-      ConcreteParameterState concreteParameterState = parameterState.asConcrete();
+      ConcreteValueState concreteParameterState = parameterState.asConcrete();
 
       // No need to create a node for a parameter that doesn't depend on any other parameters
       // (unless some other parameter depends on this parameter).
@@ -247,7 +247,7 @@
       if (enclosingMethodState.isUnknown()) {
         // The parameter depends on another parameter for which we don't know anything.
         node.clearPredecessors();
-        node.setState(ParameterState.unknown());
+        node.setState(ValueState.unknown());
         return TraversalContinuation.doBreak();
       }
 
@@ -326,7 +326,7 @@
       return predecessors;
     }
 
-    ParameterState getState() {
+    ValueState getState() {
       return methodState.getParameterState(parameterIndex);
     }
 
@@ -342,12 +342,12 @@
       return pending;
     }
 
-    ParameterState addState(
+    ValueState addState(
         AppView<AppInfoWithLiveness> appView,
-        NonEmptyParameterState parameterStateToAdd,
+        NonEmptyValueState parameterStateToAdd,
         Action onChangedAction) {
-      ParameterState oldParameterState = getState();
-      ParameterState newParameterState =
+      ValueState oldParameterState = getState();
+      ValueState newParameterState =
           oldParameterState.mutableJoin(
               appView,
               parameterStateToAdd,
@@ -366,7 +366,7 @@
       pending = true;
     }
 
-    void setState(ParameterState parameterState) {
+    void setState(ValueState parameterState) {
       methodState.setParameterState(parameterIndex, parameterState);
     }
 
diff --git a/src/main/java/com/android/tools/r8/optimize/compose/ArgumentPropagatorComposeModeling.java b/src/main/java/com/android/tools/r8/optimize/compose/ArgumentPropagatorComposeModeling.java
index 6ffeb6d..2a54b56 100644
--- a/src/main/java/com/android/tools/r8/optimize/compose/ArgumentPropagatorComposeModeling.java
+++ b/src/main/java/com/android/tools/r8/optimize/compose/ArgumentPropagatorComposeModeling.java
@@ -16,8 +16,8 @@
 import com.android.tools.r8.ir.code.InvokeStatic;
 import com.android.tools.r8.ir.code.Or;
 import com.android.tools.r8.ir.code.Value;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePrimitiveTypeParameterState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcretePrimitiveTypeValueState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.BitUtils;
 import com.android.tools.r8.utils.BooleanUtils;
@@ -84,7 +84,7 @@
    *   }
    * </pre>
    */
-  public ParameterState modelParameterStateForChangedOrDefaultArgumentToComposableFunction(
+  public ValueState modelParameterStateForChangedOrDefaultArgumentToComposableFunction(
       InvokeMethod invoke,
       ProgramMethod singleTarget,
       int argumentIndex,
@@ -148,7 +148,7 @@
     assert argument.getType().isInt();
 
     DexString expectedFieldName;
-    ParameterState state = ParameterState.bottomPrimitiveTypeParameter();
+    ValueState state = ValueState.bottomPrimitiveTypeParameter();
     if (!hasDefaultParameter || argumentIndex == invokedMethod.getArity() - 2) {
       // We are looking at an argument to the $$changed parameter of the @Composable function.
       // We generally expect this argument to be defined by a call to updateChangedFlags().
@@ -176,7 +176,7 @@
         // Update the model from bottom to a special value that effectively throws away any known
         // information about the lowermost bit of $$changed.
         state =
-            new ConcretePrimitiveTypeParameterState(
+            new ConcretePrimitiveTypeValueState(
                 appView
                     .abstractValueFactory()
                     .createDefiniteBitsNumberValue(
diff --git a/src/main/java/com/android/tools/r8/optimize/compose/ComposeMethodProcessor.java b/src/main/java/com/android/tools/r8/optimize/compose/ComposeMethodProcessor.java
index 319d053..9a57173 100644
--- a/src/main/java/com/android/tools/r8/optimize/compose/ComposeMethodProcessor.java
+++ b/src/main/java/com/android/tools/r8/optimize/compose/ComposeMethodProcessor.java
@@ -21,9 +21,9 @@
 import com.android.tools.r8.optimize.argumentpropagation.ArgumentPropagatorCodeScanner;
 import com.android.tools.r8.optimize.argumentpropagation.ArgumentPropagatorOptimizationInfoPopulator;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteMonomorphicMethodState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ConcreteValueState;
 import com.android.tools.r8.optimize.argumentpropagation.codescanner.MethodState;
-import com.android.tools.r8.optimize.argumentpropagation.codescanner.ParameterState;
+import com.android.tools.r8.optimize.argumentpropagation.codescanner.ValueState;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.utils.LazyBox;
 import com.android.tools.r8.utils.Timing;
@@ -105,10 +105,10 @@
       ConcreteMonomorphicMethodState monomorphicMethodState = methodState.asMonomorphic();
       for (int i = 0; i < monomorphicMethodState.size(); i++) {
         if (monomorphicMethodState.getParameterState(i).isConcrete()) {
-          ConcreteParameterState concreteParameterState =
+          ConcreteValueState concreteParameterState =
               monomorphicMethodState.getParameterState(i).asConcrete();
           if (concreteParameterState.hasInFlow()) {
-            monomorphicMethodState.setParameterState(i, ParameterState.unknown());
+            monomorphicMethodState.setParameterState(i, ValueState.unknown());
           }
         }
       }