private function processSearchResponse()
    {
        /** @var SearchResponse $obj_search_response */
        $obj_search_response = $this->obj_last_response;
        $obj_response = (object)[
            'status' => $this->describeStatusCode($obj_search_response->getStatus()->getCode()),
            'hits' => $obj_search_response->getMatchedCount(),
            'count' => $obj_search_response->getResultSize(),
            'results' => []
        ];
        $obj_mapper = new Mapper();
        foreach($obj_search_response->getResultList() as $obj_result) {
            /** @var SearchResult $obj_result */
            $obj_doc = $obj_mapper->fromGoogle($obj_result->getDocument(), $obj_result->getExpressionList());
            $obj_response->results[] = (object)[
                'score' => ($obj_result->getScoreSize() > 0 ? $obj_result->getScore(0) : 0),
                'doc' => $obj_doc
            ];
        }

        // Map facets from results
        // @todo Restructure/review response object and moving this code to Mapper
        if($obj_search_response->getFacetResultSize() > 0) {
            $obj_response->facets = []; // create the empty facets placeholder in the response
            /** @var \google\appengine\FacetResult $obj_facet */
            foreach($obj_search_response->getFacetResultList() as $obj_facet) {
                $arr_facet_values = [];
                /** @var \google\appengine\FacetResultValue $obj_facet_value */
                foreach($obj_facet->getValueList() as $obj_facet_value) {
                    $arr_facet_values[] = [
                        'agg' => $obj_facet_value->getName(),
                        'count' => $obj_facet_value->getCount()
                    ];
                }
                $obj_response->facets[$obj_facet->getName()] = $arr_facet_values;
            }
        }

        return $obj_response;
    }