I'd rather not vendor-lock AA users if we can help it. That being said, I'd also rather explicitly version-check instead of relying on duck-typing. If there were another gem that implemented the same methods, then it would make sense. But for now I think it makes the code harder to understand.

But right now we don't have an elegant way to version-check... so I wrote one:
```ruby
module ActiveAdmin
  module Dependencies

    # Provides a simple query interface to check for gem dependencies
    #
    # ActiveAdmin::Dependencies.draper
    # => #<Gem::Specification:0x3ffb89c49ae0 draper-1.2.1>
    #
    # ActiveAdmin::Dependencies.draper?
    # => true
    #
    # ActiveAdmin::Dependencies.draper? :<=, '1.1.0'
    # => false
    #
    # ActiveAdmin::Dependencies.draper? :==, '1.2.1'
    # => true
    #
    def self.check_for(gem_name)
      gem_name = gem_name.to_s

      singleton_class.send :define_method, gem_name do
        Gem.loaded_specs[gem_name]
      end

      singleton_class.send :define_method, gem_name+'?' do |verb = nil, version = nil|
        spec = send gem_name
        if verb && version
          !!spec && spec.version.send(verb, Gem::Version.create(version))
        else
          !!spec
        end
      end
    end

    check_for :draper

  end
end
```

Which enables this code:
```ruby
def collection_decorator_class_for(decorator)
  if Dependencies.draper? && decorator < Draper::CollectionDecorator
    if Dependencies.draper? :>=, '1.3.0'
      decorator.collection_decorator_class
    else
      Draper::CollectionDecorator
    end
  else
    decorator
  end
end
```