# File lib/faster_csv.rb, line 300
      def fields(*headers_and_or_indices)
        if headers_and_or_indices.empty?  # return all fields--no arguments
          @row.map { |pair| pair.last }
        else                              # or work like values_at()
          headers_and_or_indices.inject(Array.new) do |all, h_or_i|
            all + if h_or_i.is_a? Range
              index_begin = h_or_i.begin.is_a?(Integer) ? h_or_i.begin :
                                                          index(h_or_i.begin)
              index_end   = h_or_i.end.is_a?(Integer)   ? h_or_i.end :
                                                          index(h_or_i.end)
              new_range   = h_or_i.exclude_end? ? (index_begin...index_end) :
                                                  (index_begin..index_end)
              fields.values_at(new_range)
            else
              [field(*Array(h_or_i))]
            end
          end
        end
      end