def new(*args, version: nil, **options)
      return super(*args, **options) unless versions.any?
      self[version].new(*args, **options)
    end
def new(*args, version: nil, **options)
      return super(*args, **options) unless versions.any?
      self[version].new(*args, **options)
    end
Checks if class has mulitple versions available and picks one that matches the version option.
 @!visibility private