class Google::Cloud::Config

def resolve_validator! initial, opts

def resolve_validator! initial, opts
  allow_nil = initial.nil? || opts[:allow_nil]
  if opts.key? :validator
    build_proc_validator! opts[:validator], allow_nil
  elsif opts.key? :match
    build_match_validator! opts[:match], allow_nil
  elsif opts.key? :enum
    build_enum_validator! opts[:enum], allow_nil
  elsif [true, false].include? initial
    build_enum_validator! [true, false], allow_nil
  elsif initial.nil?
    OPEN_VALIDATOR
  else
    klass = Config.config?(initial) ? Config : initial.class
    build_match_validator! klass, allow_nil
  end
end