def compile_variables

      vars = h.parent_id ? parent.compile_variables : {}
      vars.merge!(h.variables) if h.variables

      vars
    end
def compile_variables

      vars = h.parent_id ? parent.compile_variables : {}
      vars.merge!(h.variables) if h.variables

      vars
    end
Returns a fresh hash of all the variables visible from this expression.

 This is used mainly when forgetting an expression.