    # File lib/rbot/irc.rb, line 1905
        def new_user(str, fails=true)
          if str.nil_or_empty?
            raise "Tried to look for empty or nil user name #{str.inspect}" if fails
            return nil
          end
          tmp = str.to_irc_user(:server => self)
          old = get_user(tmp.nick)
          # debug "Tmp: #{tmp.inspect}"
          # debug "Old: #{old.inspect}"
          if old
            # debug "User already existed as #{old.inspect}"
            if tmp.known?
              if old.known?
                # debug "Both were known"
                # Do not raise an error: things like Freenode change the hostname after identification
                warning "User #{tmp.nick} has inconsistent Netmasks! #{self} knows #{old.inspect} but access was tried with #{tmp.inspect}" if old != tmp
                raise "User #{tmp} already exists on server #{self}" if fails
              end
              if old.fullform.downcase != tmp.fullform.downcase
                old.replace(tmp)
                # debug "Known user now #{old.inspect}"
              end
            end
            return old
          else
            warn "#{self} doesn't support nicknames this long (#{tmp.nick.length} > #{@supports[:nicklen]})" unless tmp.nick.length <= @supports[:nicklen]
            @users << tmp
            return @users.last
          end
        end