that's not quite true, because arbitrary expressions can change meaning due to e.g. overloading of functions.
E.g. Random.random() will have to be called each time that case branch is evaluated, because that function could be overloaded or change its returned value.
E.g. Random.random() will have to be called each time that case branch is evaluated, because that function could be overloaded or change its returned value.