code: public <T> JsonReaderI<T> getMapper(Class<T> type) {
  		// look for cached Mapper
  		@SuppressWarnings("unchecked")
  		JsonReaderI<T> map = (JsonReaderI<T>) cache.get(type);
  		if (map != null)
  			return map;
  		/*
  		 * Special handle
  		 */
  		if (type instanceof Class) {
  			if (Map.class.isAssignableFrom(type))
  				map = new DefaultMapperCollection<T>(this, type);
  			else if (List.class.isAssignableFrom(type))
  				map = new DefaultMapperCollection<T>(this, type);
  			if (map != null) {
  				cache.put(type, map);
  				return map;
  			}
  		}
  
  		if (type.isArray())
  			map = new ArraysMapper.GenericMapper<T>(this, type);
  		else if (List.class.isAssignableFrom(type))
  			map = new CollectionMapper.ListClass<T>(this, type);
  		else if (Map.class.isAssignableFrom(type))
  			map = new CollectionMapper.MapClass<T>(this, type);
  		else
  			// use bean class
  			map = new BeansMapper.Bean<T>(this, type);
  		cache.putIfAbsent(type, map);
  		return map;
  	}
docs: Get the corresponding mapper Class, or create it on first call
  
  @param type
  to be map