    # File lib/merb-core/controller/mixins/responder.rb, line 262
        def _accept_types
          accept = request.accept

          MIME_MUTEX.synchronize do
            return ACCEPT_RESULTS[accept] if ACCEPT_RESULTS[accept]
          end

          types = request.accept.split(Merb::Const::ACCEPT_SPLIT).map do |entry|
            entry =~ Merb::Const::MEDIA_RANGE
            media_range, quality = $1, $3

            kind, sub_type = media_range.split(Merb::Const::SLASH_SPLIT)
            mime_sym = Merb.available_accepts[media_range]
            mime = Merb.available_mime_types[mime_sym]
            (quality ||= 0.0) if media_range == "*/*"
            quality = quality ? (quality.to_f * 100).to_i : 100
            quality *= (mime && mime[:default_quality] || 1)
            [quality, mime_sym, media_range, kind, sub_type, mime]
          end

          accepts = types.sort_by {|x| x.first }.reverse!.map! {|x| x[1]}

          MIME_MUTEX.synchronize do
            ACCEPT_RESULTS[accept] = accepts.freeze
          end

          accepts
        end