code: @Nullable
      // Since Bundle#getParcelableArrayList returns concrete ArrayList type, so this method follows that implementation.
      public static <T extends Parcelable> ArrayList<T> optParcelableArrayList(@Nullable Bundle bundle, @Nullable String key) {
          return optParcelableArrayList(bundle, key, new ArrayList<T>());
      }
docs: Returns a optional {@link android.os.Parcelable} {@link java.util.ArrayList}. In other words, returns the value mapped by key if it exists and is a {@link android.os.Parcelable} {@link java.util.ArrayList}.
  The bundle argument is allowed to be {@code null}. If the bundle is null, this method returns null.
  @param bundle a bundle. If the bundle is null, this method will return null.
  @param key a key for the value.
  @return a {@link android.os.Parcelable} {@link java.util.ArrayList} value if exists, null otherwise.
  @see android.os.Bundle#getParcelableArrayList(String)