join method
Implementation
AbstractState<D> join(AbstractState<D> other) {
final result = <String, D>{};
final allVars = {..._values.keys, ...other._values.keys};
for (final v in allVars) {
// Use getForJoin to treat missing variables as BOTTOM
// This ensures that unprocessed predecessors don't pollute the join
final thisVal = getForJoin(v);
final otherVal = other.getForJoin(v);
result[v] = thisVal.join(otherVal);
}
return AbstractState(_defaultValue, result);
}