code: private <T> Instantiator<T> getByDefaultConstructor(TypeToken<T> type) {
      try {
        final Constructor<? super T> defaultCons = type.getRawType().getDeclaredConstructor();
        defaultCons.setAccessible(true);
  
        return new Instantiator<T>() {
          @Override
          public T create() {
            try {
              return (T) defaultCons.newInstance();
            } catch (Exception e) {
              throw Throwables.propagate(e);
            }
          }
        };
  
      } catch (NoSuchMethodException e) {
        return null;
      }
    }
docs: Returns an {@link Instantiator} that uses default constructor to instantiate an object of the given type.
  
  @param type
  @param <T>
  @return