def initialize(source, opts = {})
        opts ||= {}
        unless @quirks_mode = opts[:quirks_mode]
          source = convert_encoding source
        end
        super source
        if !opts.key?(:max_nesting) # defaults to 100
          @max_nesting = 100
        elsif opts[:max_nesting]
          @max_nesting = opts[:max_nesting]
        else
          @max_nesting = 0
        end
        @allow_nan = !!opts[:allow_nan]
        @symbolize_names = !!opts[:symbolize_names]
        if opts.key?(:create_additions)
          @create_additions = !!opts[:create_additions]
        else
          @create_additions = false
        end
        @create_id = @create_additions ? JSON.create_id : nil
        @object_class = opts[:object_class] || Hash
        @array_class  = opts[:array_class] || Array
        @match_string = opts[:match_string]
      end
Creates a new JSON::Pure::Parser instance for the string _source_.

It will be configured by the _opts_ hash. _opts_ can have the following
keys:
* *max_nesting*: The maximum depth of nesting allowed in the parsed data
structures. Disable depth checking with :max_nesting => false|nil|0,
it defaults to 100.
* *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
defiance of RFC 4627 to be parsed by the Parser. This option defaults
to false.
* *symbolize_names*: If set to true, returns symbols for the names
(keys) in a JSON object. Otherwise strings are returned, which is also
the default.
* *create_additions*: If set to true, the Parser creates
additions when if a matching class and create_id was found. This
option defaults to false.
* *object_class*: Defaults to Hash
* *array_class*: Defaults to Array
* *quirks_mode*: Enables quirks_mode for parser, that is for example
parsing single JSON values instead of documents is possible.