# File lib/faster_csv.rb, line 1421
    def initialize(data, options = Hash.new)
      # build the options for this read/write
      options = DEFAULT_OPTIONS.merge(options)

      # create the IO object we will read from
      @io = if data.is_a? String then StringIO.new(data) else data end

      init_separators(options)
      init_parsers(options)
      init_converters(options)
      init_headers(options)

      unless options.empty?
        raise ArgumentError, "Unknown options:  #{options.keys.join(', ')}."
      end

      # track our own lineno since IO gets confused about line-ends is CSV fields
      @lineno = 0
    end