`finder` is an instance of `ActionView::LookupContext` (a thingy that is instantiated on per request basis, its purpose is to do template lookups) its `format` and `variants` are setup for the current request (based on request headers etc). It is __not ok__ to just change its `format` and `variants` as it might mess up template lookup for the current request.

Also don't like the `.dup` workaround as it depends on hoping that relevant attrs (`format` and `variants`) are implemented as a simple i-vars.

This code should be a part of `ActionView::LookupContext`, i.e. it should have a method like this:
```ruby
def with_formats_and_variants(new_formats, new_variants)
  old_formats = formats
  self.formats = new_formats
  old_variants = variants
  self.variants = new_variants
  yield
ensure
  self.formats = old_formats
  self.variants = old_variants
end
```

which `Digestor` would then use:
```ruby
finder.with_formats_and_variants([format], [variant]) do
  finder.disable_cache { finder.find(logical_name, [], partial?) }
end
```