> Base step(in Base b, in int delta) { > final switch (b.type) with (b) { > case intType: return Base(b.get!int + delta); Or better: final switch (b.type) with (b.Types) { Bye, bearophile