@SuppressWarnings("unchecked") public <T>JsonStringMap<T> createMapDtoFromJson(Reader json,Class<T> dtoInterface) throws IOException {
  final DtoProvider<T> dtoProvider=getDtoProvider(dtoInterface);
  final Map<String,JsonElement> map;
  try {
    map=gson.fromJson(json,mapTypeCache.getUnchecked(JsonElement.class));
  }
 catch (  JsonSyntaxException e) {
    final Throwable cause=e.getCause();
    if (cause instanceof IOException) {
      throw (IOException)cause;
    }
    throw e;
  }
  final Map<String,T> result=new LinkedHashMap<>(map.size());
  for (  Map.Entry<String,JsonElement> e : map.entrySet()) {
    result.put(e.getKey(),dtoProvider.fromJson(e.getValue()));
  }
  return new JsonStringMapImpl<>(result);
}

@ SuppressWarnings ( "unchecked" ) public < T > JsonStringMap < T > createMapDtoFromJson ( Reader json , Class < T > dtoInterface ) throws IOException { final DtoProvider < T > dtoProvider = getDtoProvider ( dtoInterface ) ; final Map < String , JsonElement > map ; try { map = gson . fromJson ( json , mapTypeCache . getUnchecked ( JsonElement . class ) ) ; } catch ( JsonSyntaxException e ) { final Throwable cause = e . getCause ( ) ; if ( cause instanceof IOException ) { throw ( IOException ) cause ; } throw e ; } final Map < String , T > result = new LinkedHashMap < > ( map . size ( ) ) ; for ( Map . Entry < String , JsonElement > e : map . entrySet ( ) ) { result . put ( e . getKey ( ) , dtoProvider . fromJson ( e . getValue ( ) ) ) ; } return new JsonStringMapImpl < > ( result ) ; }
parses the json data from the specified reader into map of objects of the specified type .
