public function matchLocation(array $conditions, array $sort = array(), $offset = 0, $limit = 0)
    {
        $match = reset($conditions);
        if (count($conditions) === 1 && in_array(($key = key($conditions)), array(self::MATCH_LOCATION_ID, self::MATCH_LOCATION_REMOTE_ID))) {
            $match = (array)$match;
            $locations = array();
            switch ($key) {
                case self::MATCH_LOCATION_ID:
                    foreach($match as $locationId) {
                        $location = $this->repository->getLocationService()->loadLocation($locationId);
                        $locations[$location->id] = $location;
                    }
                    break;
                case self::MATCH_LOCATION_REMOTE_ID:
                    foreach($match as $locationRemoteId) {
                        $location = $this->repository->getLocationService()->loadLocationByRemoteId($locationRemoteId);
                        $locations[$location->id] = $location;
                    }
                    break;
            }
            return new LocationCollection($locations);
        }

        return parent::matchLocation($conditions, $sort, $offset, $limit);
    }