private static String readKey(Parcel serialized) {
    if (shouldReadKeysAsStrings()) {
      return serialized.readString();
    }

    // Older platforms require readValue
    @SuppressLint("ParcelClassLoader") // We're just reading a string
    Object entryKeyObj = serialized.readValue(null /* Use the system ClassLoader */);
    if (!(entryKeyObj instanceof String)) {
      // Should never happen (Bundle keys are always Strings)
      Log.w(TAG, ERROR_INVALID_CALLBACK);
      return null;
    }

    return (String) entryKeyObj;
  }
Reads the next key (String) from the provided {@code serialized} Parcel.

<p>Naively using {@link Parcel#readString()} fails on versions of Android older than L, whereas
{@link Parcel#readValue(ClassLoader)} works on older versions but fails on anything L or newer.
jobdispatcher/src/main/java/com/firebase/jobdispatcher/GooglePlayCallbackExtractor.java