# 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