I guess my question is: isn't this equivalent to
`fields <<  Arel::Nodes::NamedFunction.new(m, [k, *args], k)` ? If so, you could avoid the monkeypatching, no?