# File lib/abstract_controller/layouts.rb, line 245
      def _write_layout_method
        remove_possible_method(:_layout)

        case defined?(@_layout) ? @_layout : nil
        when String
          self.class_eval %{def _layout; #{@_layout.inspect} end}, __FILE__, __LINE__
        when Symbol
          self.class_eval "def _layout\n\#{@_layout}.tap do |layout|\nunless layout.is_a?(String) || !layout\nraise ArgumentError, \"Your layout method :\#{@_layout} returned \\\#{layout}. It \" \\\n\"should have returned a String, false, or nil\"\nend\nend\nend\n", __FILE__, __LINE__ + 1
        when Proc
          define_method :_layout_from_proc, &@_layout
          self.class_eval %{def _layout; _layout_from_proc(self) end}, __FILE__, __LINE__
        when false
          self.class_eval %{def _layout; end}, __FILE__, __LINE__
        when true
          raise ArgumentError, "Layouts must be specified as a String, Symbol, false, or nil"
        when nil
          if name
            _prefix = "layouts" unless _implied_layout_name =~ /\blayouts/

            self.class_eval "def _layout\nif template_exists?(\"\#{_implied_layout_name}\", \#{_prefix.inspect})\n\"\#{_implied_layout_name}\"\nelse\nsuper\nend\nend\n", __FILE__, __LINE__ + 1
          end
        end
        self.class_eval { private :_layout }
      end