Can we use polymorphism instead of a conditional here? I.e., have a "default" guard interpreter type that has the old behavior?