# File lib/faker/internet.rb, line 17
      def user_name(specifier = nil, separators = %w(. _))
        with_locale(:en) do
          if specifier.respond_to?(:scan)
            return specifier.scan(/\w+/).shuffle.join(separators.sample).downcase
          elsif specifier.kind_of?(Integer)
            # If specifier is Integer and has large value, Argument error exception is raised to overcome memory full error 
            raise ArgumentError, "Given argument is too large" if specifier > 10**6
            tries = 0 # Don't try forever in case we get something like 1_000_000.
            begin
              result = user_name(nil, separators)
              tries += 1
            end while result.length < specifier && tries < 7
            return result * (specifier/result.length + 1) if specifier > 0
          elsif specifier.kind_of?(Range)
            tries = 0
            begin
              result = user_name(specifier.min, separators)
              tries += 1
            end while !specifier.include?(result.length) && tries < 7
            return result[0...specifier.max]
          end

          [
            Char.prepare(Name.first_name),
            [Name.first_name, Name.last_name].map{ |name|
              Char.prepare(name)
            }.join(separators.sample)
          ].sample
        end
      end