/**
  * Searches for persons based off the specified query.
  *
  * @param GedcomxSearchQuery|string $query
  * @param StateTransitionOption $option,...
  *
  * @return PersonSearchResultsState|null
  */
 public function searchForPersons($query, StateTransitionOption $option = null)
 {
     $searchLink = $this->getLink(Rel::PERSON_SEARCH);
     if ($searchLink === null || $searchLink->getTemplate() === null) {
         return null;
     }
     if ($query instanceof GedcomxPersonSearchQueryBuilder) {
         $queryString = $query->build();
     } else {
         $queryString = $query;
     }
     $uri = array($searchLink->getTemplate(), array("q" => $queryString, "access_token" => $this->accessToken));
     $request = $this->createAuthenticatedFeedRequest("GET", $uri);
     return $this->stateFactory->createState("PersonSearchResultsState", $this->client, $request, $this->passOptionsTo('invoke', array($request), func_get_args()), $this->accessToken);
 }
 /**
  * Searches for places based off the specified query.
  *
  * @param GedcomxSearchQuery|string $query
  * @param StateTransitionOption     $option,...
  *
  * @throws \Gedcomx\Rs\Client\Exception\GedcomxInvalidQueryParameter
  * @return \Gedcomx\Rs\Client\PlaceSearchResultsState|null
  */
 public function searchForPlaces($query, StateTransitionOption $option = null)
 {
     $searchLink = $this->getLink(Rel::PLACE_SEARCH);
     if ($searchLink === null || $searchLink->getTemplate() === null) {
         return null;
     }
     if ($query instanceof GedcomxPlaceSearchQueryBuilder) {
         $queryString = $query->build();
     } elseif (is_string($query)) {
         $queryString = $query;
     } else {
         throw new GedcomxInvalidQueryParameter($query);
     }
     $uri = array($searchLink->getTemplate(), array("q" => $queryString));
     $request = $this->createAuthenticatedFeedRequest("GET", $uri, ['Accept' => Gedcomx::ATOM_JSON_MEDIA_TYPE]);
     return $this->stateFactory->createState("PlaceSearchResultsState", $this->client, $request, $this->passOptionsTo('invoke', array($request), func_get_args()), $this->accessToken);
 }