def stop(stop_message = '')
      mon_enter
      return if done?

      clear_line
      return if @clear

      data = message.gsub(MATCHER, next_char)
      data = replace_tokens(data)
      if !stop_message.empty?
        data << ' ' + stop_message
      end

      write(data, false)
      write("\n", false) unless @clear || @multispinner
    ensure
      @state      = :stopped
      @done       = true
      @started_at = nil

      if @hide_cursor
        write(TTY::Cursor.show, false)
      end

      emit(:done)
      kill
      mon_exit
    end
def stop(stop_message = '')
      mon_enter
      return if done?

      clear_line
      return if @clear

      data = message.gsub(MATCHER, next_char)
      data = replace_tokens(data)
      if !stop_message.empty?
        data << ' ' + stop_message
      end

      write(data, false)
      write("\n", false) unless @clear || @multispinner
    ensure
      @state      = :stopped
      @done       = true
      @started_at = nil

      if @hide_cursor
        write(TTY::Cursor.show, false)
      end

      emit(:done)
      kill
      mon_exit
    end
Finish spining

 @param [String] stop_message
   the stop message to print

 @api public