the logic seems confusing, mostly because it seems `schema_columns` and `user_provided_columns` are differently-nested data structured yet both are called `columns` (e.g. you are adding the *values* of the user columns with the schema columns *themselves*)

Also don't really think you need to pass `schema_columns` as an argument to this method given that it's available as instance variable.