# File lib/chef/json_compat.rb, line 56
      def from_json(source, opts = {})
        obj = ::Yajl::Parser.parse(source)

        unless obj.kind_of?(Hash) || obj.kind_of?(Array)
          raise JSON::ParserError, "Top level JSON object must be a Hash or Array (actual: #{obj.class})"
        end

        # The old default in the json gem (which we are mimicing because we
        # sadly rely on this misfeature) is to "create additions" i.e., convert
        # JSON objects into ruby objects. Explicit :create_additions => false
        # is required to turn it off.
        if opts[:create_additions].nil? || opts[:create_additions]
          map_to_rb_obj(obj)
        else
          obj
        end
      rescue Yajl::ParseError => e
        raise JSON::ParserError, e.message
      end