    # File lib/json/common.rb, line 308
      def load(source, proc = nil)
        opts = load_default_options
        if source.respond_to? :to_str
          source = source.to_str
        elsif source.respond_to? :to_io
          source = source.to_io.read
        elsif source.respond_to?(:read)
          source = source.read
        end
        if opts[:quirks_mode] && (source.nil? || source.empty?)
          source = 'null'
        end
        result = parse(source, opts)
        recurse_proc(result, &proc) if proc
        result
      end