code: protected function validateShipmentMethodRequirements(SaleInterface $sale, Constraint $constraint)
      {
          if (null === $method = $sale->getShipmentMethod()) {
              return;
          }
  
          if ($sale->isSameAddress()) {
              $address = $sale->getInvoiceAddress();
              $path = 'invoiceAddress';
          } else {
              $address = $sale->getDeliveryAddress();
              $path = 'deliveryAddress';
          }
  
          if (null === $address) {
              return;
          }
  
          $gateway = $this->gatewayRegistry->getGateway($method->getGatewayName());
  
          if ($gateway->requires(Gateway\GatewayInterface::REQUIREMENT_MOBILE)) {
              if (is_null($address->getMobile())) {
                  $this->context
                      ->buildViolation($constraint->shipment_method_require_mobile)
                      ->atPath($path . '.mobile')
                      ->addViolation();
              }
          }
      }
docs: Validates the shipment method requirements.
  
  @param SaleInterface $sale
  @param Constraint    $constraint