BACKPORT: `Extract#as` should not mutate the receiver

Fixes https://github.com/rails/rails/issues/16913