docs: static boolean shouldUpdate(AmazonInfo newInfo, AmazonInfo oldInfo) {
          if (newInfo.getMetadata().isEmpty()) {
              logger.warn("Newly resolved AmazonInfo is empty, skipping an update cycle");
          } else if (!newInfo.equals(oldInfo)) {
              if (isBlank(newInfo.get(AmazonInfo.MetaDataKey.instanceId))) {
                  logger.warn("instanceId is blank, skipping an update cycle");
                  return false;
              } else if (isBlank(newInfo.get(AmazonInfo.MetaDataKey.localIpv4))) {
                  logger.warn("localIpv4 is blank, skipping an update cycle");
                  return false;
              } else {
                  Set<String> newKeys = new HashSet<>(newInfo.getMetadata().keySet());
                  Set<String> oldKeys = new HashSet<>(oldInfo.getMetadata().keySet());
  
                  Set<String> union = new HashSet<>(newKeys);
                  union.retainAll(oldKeys);
                  newKeys.removeAll(union);
                  oldKeys.removeAll(union);
  
                  for (String key : newKeys) {
                      logger.info("Adding new metadata {}={}", key, newInfo.getMetadata().get(key));
                  }
  
                  for (String key : oldKeys) {
                      logger.info("Removing old metadata {}={}", key, oldInfo.getMetadata().get(key));
                  }
              }
  
              return true;
          }
          return false;
      }