for (final Variant variant : variants) {
if (variant instanceof SimplePushVariant && message.getSimplePush() != null) {
// SP needs the 'simple-push' be present, the 'message' (aka data) has no meanings here
final PushNotificationSender simplePushSender = senders.select(new SenderTypeLiteral(SimplePushVariant.class)).get();
final List<String> tokenPerVariant = clientInstallationService.findAllDeviceTokenForVariantIDByCriteria(variant.getVariantID(), categories, aliases, deviceTypes);
final SenderServiceCallback senderCallback = new SenderServiceCallback(variant, tokenPerVariant.size(), pushMessageInformation);
simplePushSender.sendPushMessage(variant, tokenPerVariant, message, senderCallback);
} else if (!(variant instanceof SimplePushVariant) && message.getData() != null) {
// all other variants require 'message' (aka data) to be present
final List<String> tokenPerVariant = clientInstallationService.findAllDeviceTokenForVariantIDByCriteria(variant.getVariantID(), categories, aliases, deviceTypes);