@Override
    @SuppressWarnings( "unchecked" )
    public <T> T newInstance( final Class<T> type ) {
        if (type == null) { throw new IllegalArgumentException("type cannot be null."); }
        Constructor<?> constructor = _constructors.get( type );
        if ( constructor == null ) {
            constructor = getNoArgsConstructor( type );
            if ( constructor == null ) {
                constructor = newConstructorForSerialization( type );
            }
            _constructors.put( type, constructor );
        }
        return (T) newInstanceFrom( constructor );
    }
@Override
    @SuppressWarnings( "unchecked" )
    public <T> T newInstance( final Class<T> type ) {
        if (type == null) { throw new IllegalArgumentException("type cannot be null."); }
        Constructor<?> constructor = _constructors.get( type );
        if ( constructor == null ) {
            constructor = getNoArgsConstructor( type );
            if ( constructor == null ) {
                constructor = newConstructorForSerialization( type );
            }
            _constructors.put( type, constructor );
        }
        return (T) newInstanceFrom( constructor );
    }
@ Override @ SuppressWarnings ( "unchecked" ) public < T > T newInstance ( final Class < T > type ) { if ( type == null ) { throw new IllegalArgumentException ( "type cannot be null." ) ; } Constructor < ? > constructor = _constructors . get ( type ) ; if ( constructor == null ) { constructor = getNoArgsConstructor ( type ) ; if ( constructor == null ) { constructor = newConstructorForSerialization ( type ) ; } _constructors . put ( type , constructor ) ; } return ( T ) newInstanceFrom ( constructor ) ; }
{@inheritDoc}
{