code: private String doCreateParcelableCastIfExtraIsParcelable(TypeMirror extraType) {
      String castToParcelableIfNecessary = "";
      if (extraType instanceof DeclaredType) {
        boolean isParcelable = false;
        final TypeElement typeElement = (TypeElement) ((DeclaredType) extraType).asElement();
        for (TypeMirror interfaceType : typeElement.getInterfaces()) {
          if ("android.os.Parcelable".equals(interfaceType.toString())) {
            isParcelable = true;
          }
        }
  
        if (isParcelable) {
          castToParcelableIfNecessary = "(android.os.Parcelable)";
        }
      }
      return castToParcelableIfNecessary;
    }
docs: This method returns either an empty String or {@code "(Parcelable)"} if the extra type is
  Parcelable. We need this explicit conversion in cases where the extra type is both Parcelable
  and Serializable. In that case we will prefer Parcelable. Not that the extra type has to
  directly implement Parcelable, not via a super class.
  
  @param extraType the type that might be parcelable.
  @return either an empty String or {@code "(Parcelable)"} if the extra type is Parcelable