@SuppressWarnings("unchecked")
  @Override
  public T read(JsonReader in) throws IOException {
    List<Exception> exceptions = new ArrayList<>(subtypes.length);
    ReaderSupplier readerSupplier = readForSupplier(in);
    for (TypeAdapter<?> typeAdapter : adapters) {
      try {
        return (T) typeAdapter.read(readerSupplier.create());
      } catch (Exception ex) {
        exceptions.add(ex);
      }
    }
    JsonParseException failure = new JsonParseException(
        String.format(
            "Cannot parse %s with following subtypes: %s",
            type,
            Arrays.toString(subtypes)));
    for (Exception exception : exceptions) {
      failure.addSuppressed(exception);
    }
    throw failure;
  }
@SuppressWarnings("unchecked")
  @Override
  public T read(JsonReader in) throws IOException {
    List<Exception> exceptions = new ArrayList<>(subtypes.length);
    ReaderSupplier readerSupplier = readForSupplier(in);
    for (TypeAdapter<?> typeAdapter : adapters) {
      try {
        return (T) typeAdapter.read(readerSupplier.create());
      } catch (Exception ex) {
        exceptions.add(ex);
      }
    }
    JsonParseException failure = new JsonParseException(
        String.format(
            "Cannot parse %s with following subtypes: %s",
            type,
            Arrays.toString(subtypes)));
    for (Exception exception : exceptions) {
      failure.addSuppressed(exception);
    }
    throw failure;
  }
@ SuppressWarnings ( "unchecked" ) @ Override public T read ( JsonReader in ) throws IOException { List < Exception > exceptions = new ArrayList <> ( subtypes . length ) ; ReaderSupplier readerSupplier = readForSupplier ( in ) ; for ( TypeAdapter < ? > typeAdapter : adapters ) { try { return ( T ) typeAdapter . read ( readerSupplier . create ( ) ) ; } catch ( Exception ex ) { exceptions . add ( ex ) ; } } JsonParseException failure = new JsonParseException ( String . format ( "Cannot parse %s with following subtypes: %s" , type , Arrays . toString ( subtypes ) ) ) ; for ( Exception exception : exceptions ) { failure . addSuppressed ( exception ) ; } throw failure ; }
enforced by constructor parameters.
enforced by constructor parameters .