/**
  * {@inheritDoc}
  */
 public function validatePaymentInstruction(PaymentInstructionInterface $paymentInstruction)
 {
     $plugin = $this->getPlugin($paymentInstruction->getPaymentSystemName());
     try {
         $plugin->validatePaymentInstruction($paymentInstruction);
         return $this->onSuccessfulPaymentInstructionValidation($paymentInstruction);
     } catch (PluginFunctionNotSupportedException $notSupported) {
         return $this->checkPaymentInstruction($paymentInstruction);
     } catch (PluginInvalidPaymentInstructionException $invalid) {
         return $this->onUnsuccessfulPaymentInstructionValidation($paymentInstruction, $invalid);
     }
 }