# File ../src/optiflag.rb, line 742
    def handle_errors_and_help(options={})
      return if !@all_flags
      # the next three lines allow me 

      # to increase testability of

      # this function, allowing client code to 

      # simulate ARGV passing without actually

      # depending on ARGV being there

      options[:argv] ||= ARGV  # set it, only if not set

      options[:level] ||= :not_strict # breaks backwards compatability

      argv = options[:argv]
      # the next two lines add the help 

      # flag to the list.

      usage_flag "h","?"  # make this part of the standard config

      properties "h", :long_form=>"help"
      parse(argv,false)
      if argv.help_requested? 
        if !argv.help_requested_on
          show_help
        elsif the_on = argv.help_requested_on
          show_individual_extended_help(the_on.to_sym)
        end
        exit
      end
      if argv.extended_help_requested?
        show_extended_help
        exit
      end
      if argv.errors?
        argv.errors.divulge_problems
#        show_help

        exit
      end
      if argv.warnings? and options[:level] == :with_no_warnings
        puts "In strict warning handling mode.  Warnings will cause process to exit."
        argv.warnings.each do |x|
           puts "   #{ x  }"
        end
        puts "Please fix these warnings and try again."
        exit
      end
      # the next three lines augment the 

      # name of the module that the user

      # has declared... not just argv.

      self.extend NewInterface
      self.flag_value = argv.flag_value
      self.errors = argv.errors
      argv  
    end