I mean it comes from this line above:

`connection.schema_cache.columns(table_name)`

Which can be accessed by the method we are discussing directly. I feel like the `columns`, `columns_hash`, and `add_user_provided_columns` can be somehow rewritten in the way they interact with each other to be less confusing. But I don't know enough about this logic to have specific ideas :(