code: public static ImmutableList<Long> convertSoyMessageIdStrings(Iterable<String> encodedIds) {
      ImmutableList.Builder<Long> messageIds = ImmutableList.builder();
      for (String encodedId : encodedIds) {
        byte[] decodedBytes = BaseEncoding.base64Url().decode(encodedId);
        if (decodedBytes.length != Long.BYTES) {
          throw new IllegalArgumentException(
              String.format(
                  "The message ID to decode ('%s') was of invalid size (%d != %d)",
                  encodedId, decodedBytes.length, Long.BYTES));
        }
        messageIds.add(Longs.fromByteArray(decodedBytes));
      }
      return messageIds.build();
    }
docs: Converts received message ID strings, as rendered by the Soy <code>msgId</code> function, into
  a list of long message IDs.
  
  <p>The message IDs are generated by Soy as Base64 web safe ("base64url")-encoded int64s.
  
  <p>For example, "URTo5tnzILU=" = [0x51 0x14 0xe8 0xe6 0xd9 0xf3 0x20 0xb5] = 0x5114e8e6d9f320b5
  = 5842550694803087541.
  
  @throws IllegalArgumentException if any of the strings fails to decode into message IDs, is too
  long or too short.