# File src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb, line 65
      def query
        if STDIN.tty?
          done = false
          begin
            raw_no_echo_mode
            hide_cursor
            while !done
              display_choices
              done = process_input
              clear_screen if !done
            end
            if @mode == :single_choice
              [@pointer, @choices[@pointer].name]
            else
              nil
            end
          ensure
            restore_mode
            show_cursor
            puts
          end
        else
          display_choices
          puts
          nil
        end
      end