@ 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 .