in litho-processor/src/main/java/com/facebook/litho/specmodels/model/SpecModelImpl.java [784:860]
private static ImmutableList<StateParamModel> getStateValues(
ImmutableList<SpecMethodModel<DelegateMethod, Void>> delegateMethods,
ImmutableList<SpecMethodModel<EventMethod, EventDeclarationModel>> eventMethods,
ImmutableList<SpecMethodModel<EventMethod, EventDeclarationModel>> triggerMethods,
@Nullable SpecMethodModel<EventMethod, Void> workingRangeRegisterMethod,
ImmutableList<WorkingRangeMethodModel> workingRangeMethods,
ImmutableList<SpecMethodModel<UpdateStateMethod, Void>> updateStateMethods) {
final Set<StateParamModel> stateValues =
new TreeSet<>(MethodParamModelUtils.shallowParamComparator());
for (SpecMethodModel<DelegateMethod, Void> delegateMethod : delegateMethods) {
for (MethodParamModel param : delegateMethod.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
for (SpecMethodModel<EventMethod, EventDeclarationModel> eventMethod : eventMethods) {
for (MethodParamModel param : eventMethod.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
for (SpecMethodModel<EventMethod, EventDeclarationModel> triggerMethod : triggerMethods) {
for (MethodParamModel param : triggerMethod.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
if (workingRangeRegisterMethod != null) {
for (MethodParamModel param : workingRangeRegisterMethod.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
for (WorkingRangeMethodModel workingRangeMethod : workingRangeMethods) {
if (workingRangeMethod.enteredRangeModel != null) {
for (MethodParamModel param : workingRangeMethod.enteredRangeModel.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
if (workingRangeMethod.exitedRangeModel != null) {
for (MethodParamModel param : workingRangeMethod.exitedRangeModel.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
}
for (SpecMethodModel<UpdateStateMethod, Void> updateStateMethod : updateStateMethods) {
for (MethodParamModel param : updateStateMethod.methodParams) {
if (param instanceof StateParamModel) {
stateValues.add((StateParamModel) param);
}
}
}
for (SpecMethodModel<DelegateMethod, Void> delegateMethod : delegateMethods) {
for (MethodParamModel param : delegateMethod.methodParams) {
if (param instanceof DiffStateParamModel
&& !hasSameUnderlyingStateParamModel(stateValues, (DiffStateParamModel) param)) {
stateValues.add(((DiffStateParamModel) param).getUnderlyingStateParamModel());
}
}
}
return ImmutableList.copyOf(new ArrayList<>(stateValues));
}