code: public function findSingle(Criterion $filter, array $languageFilter = array())
      {
          $query = new Query();
          $query->filter = $filter;
          $query->query = new Criterion\MatchAll();
          $query->offset = 0;
          $query->limit = 1;
  
          $this->coreFilter->apply(
              $query,
              $languageFilter,
              DocumentMapper::DOCUMENT_TYPE_IDENTIFIER_CONTENT
          );
  
          $result = $this->resultExtractor->extract(
              $this->gateway->findContent($query, $languageFilter)
          );
  
          if (!$result->totalCount) {
              throw new NotFoundException('Content', 'findSingle() found no content for given $filter');
          } elseif ($result->totalCount > 1) {
              throw new InvalidArgumentException('totalCount', 'findSingle() found more then one item for given $filter');
          }
  
          $first = reset($result->searchHits);
  
          return $first->valueObject;
      }
docs: Performs a query for a single content object.
  
  @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException if the object was not found by the query or due to permissions
  @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if Criterion is not applicable to its target
  @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if there is more than than one result matching the criterions
  
  @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $filter
  @param array $languageFilter - a map of language related filters specifying languages query will be performed on.
  Also used to define which field languages are loaded for the returned content.
  Currently supports: <code>array("languages" => array(<language1>,..), "useAlwaysAvailable" => bool)</code>
  useAlwaysAvailable defaults to true to avoid exceptions on missing translations.
  
  @return \eZ\Publish\SPI\Persistence\Content