class Optimist::Option

def self.get_klass_from_default(opts, opttype)

def self.get_klass_from_default(opts, opttype)
  ## for options with :multi => true, an array default doesn't imply
  ## a multi-valued argument. for that you have to specify a :type
  ## as well. (this is how we disambiguate an ambiguous situation;
  ## see the docs for Parser#opt for details.)
  disambiguated_default = if opts[:multi] && opts[:default].is_a?(Array) && opttype.nil?
                            opts[:default].first
                          else
                            opts[:default]
                          end
  return nil if disambiguated_default.nil?
  type_from_default = get_type_from_disdef(opts[:default], opttype, disambiguated_default)
  return Optimist::Parser.registry_getopttype(type_from_default)
end