# File lib/json/pure/parser.rb, line 71
      def initialize(source, opts = {})
          if defined?(::Encoding)
            if source.encoding == Encoding::ASCII_8BIT
              b = source[0, 4].bytes.to_a
              source = case
                       when b.size >= 4 && b[0] == 0 && b[1] == 0 && b[2] == 0
                         source.dup.force_encoding(Encoding::UTF_32BE).encode!(Encoding::UTF_8)
                       when b.size >= 4 && b[0] == 0 && b[2] == 0
                         source.dup.force_encoding(Encoding::UTF_16BE).encode!(Encoding::UTF_8)
                       when b.size >= 4 && b[1] == 0 && b[2] == 0 && b[3] == 0
                         source.dup.force_encoding(Encoding::UTF_32LE).encode!(Encoding::UTF_8)
                       when b.size >= 4 && b[1] == 0 && b[3] == 0
                         source.dup.force_encoding(Encoding::UTF_16LE).encode!(Encoding::UTF_8)
                       else
                         source.dup
                       end
            else
              source = source.encode(Encoding::UTF_8)
            end
            source.force_encoding(Encoding::ASCII_8BIT)
          else
            b = source
            source = case
                     when b.size >= 4 && b[0] == 0 && b[1] == 0 && b[2] == 0
                       JSON.iconv('utf-8', 'utf-32be', b)
                     when b.size >= 4 && b[0] == 0 && b[2] == 0
                       JSON.iconv('utf-8', 'utf-16be', b)
                     when b.size >= 4 && b[1] == 0 && b[2] == 0 && b[3] == 0
                       JSON.iconv('utf-8', 'utf-32le', b)
                     when b.size >= 4 && b[1] == 0 && b[3] == 0
                       JSON.iconv('utf-8', 'utf-16le', b)
                     else
                       b
                     end
          end
        super source
        if !opts.key?(:max_nesting) # defaults to 19
          @max_nesting = 19
        elsif opts[:max_nesting]
          @max_nesting = opts[:max_nesting]
        else
          @max_nesting = 0
        end
        @allow_nan = !!opts[:allow_nan]
        @symbolize_names = !!opts[:symbolize_names]
        ca = true
        ca = opts[:create_additions] if opts.key?(:create_additions)
        @create_id = ca ? JSON.create_id : nil
        @object_class = opts[:object_class] || Hash
        @array_class = opts[:array_class] || Array
      end