This function is effectively the implementation of Variables for all expressions, but unfortunately we still need to declare a wrapper around it as a method on every single expression type.