+100 on not liking how the current design, but...

Hash#delete(key) returns the value of the key, so `if(expressions == options.delete(:expression))` will set expressions and test if truthy. If truthy, you can then check if it's True or a hash :)