/**
  * Get an address for the given request.
  *
  * @param AddressRequestInterface $request
  * @return AddressInterface[]
  * @throws InvalidAddressException when an adapter returned an invalid
  *   address entity.
  * @throws AddressNotFoundException when no address can be found.
  */
 public function getAddresses(AddressRequestInterface $request)
 {
     $adapter = null;
     $adapters = $this->adapterFactory->create($request);
     $addresses = [];
     foreach ($adapters as $adapter) {
         $addresses = $adapter->getAddresses($request);
         if (!empty($addresses)) {
             break;
         }
     }
     if (empty($addresses)) {
         throw new AddressNotFoundException('Could not find an address for the given request.');
     }
     foreach ($addresses as $address) {
         if (!$address instanceof AddressInterface) {
             throw new InvalidAddressException(sprintf('Invalid address %s supplied by adapter: %s', get_class($address), get_class($adapter)));
         }
     }
     return array_slice($addresses, 0, $this->config->getMaxSuggestions());
 }