@@ -1075,7 +1075,34 @@ function updated_u0_p(
10751075 return (u0 === missing ? state_values (prob) : u0),
10761076 (p === missing ? parameter_values (prob) : p)
10771077 end
1078- return _updated_u0_p_internal (prob, u0, p, t0; interpret_symbolicmap, use_defaults)
1078+ newu0, newp = _updated_u0_p_internal (prob, u0, p, t0; interpret_symbolicmap, use_defaults)
1079+ return late_binding_update_u0_p (prob, u0, p, t0, newu0, newp)
1080+ end
1081+
1082+ """
1083+ $(TYPEDSIGNATURES)
1084+
1085+ A function to perform custom modifications to `newu0` and/or `newp` after they have been
1086+ constructed in `remake`. `root_indp` is the innermost index provider found by recursively
1087+ calling `SymbolicIndexingInterface.symbolic_container`, provided for dispatch. Returns
1088+ the updated `newu0` and `newp`.
1089+ """
1090+ function late_binding_update_u0_p (prob, root_indp, u0, p, t0, newu0, newp)
1091+ return newu0, newp
1092+ end
1093+
1094+ """
1095+ $(TYPEDSIGNATURES)
1096+
1097+ Calls `late_binding_update_u0_p(prob, root_indp, u0, p, t0, newu0, newp)` after finding
1098+ `root_indp`.
1099+ """
1100+ function late_binding_update_u0_p (prob, u0, p, t0, newu0, newp)
1101+ root_indp = prob
1102+ while hasmethod (symbolic_container, Tuple{typeof (root_indp)}) && (sc = symbolic_container (root_indp)) != = root_indp
1103+ root_indp = sc
1104+ end
1105+ return late_binding_update_u0_p (prob, root_indp, u0, p, t0, newu0, newp)
10791106end
10801107
10811108# overloaded in MTK to intercept symbolic remake
0 commit comments