code: protected <T> T readReadable(Class<T> clazz) throws IOException {
        try {
           T object = Reflect.onClass(clazz).allowPrivilegedAccess().create().get();
           JsonSerializable readable = Cast.as(object);
           boolean isArray = JsonArraySerializable.class.isAssignableFrom(clazz);//(object instanceof ArrayValue);
           if (isArray && peek() == JsonTokenType.BEGIN_ARRAY) {
              beginArray();
           } else if (peek() == JsonTokenType.BEGIN_OBJECT) {
              beginObject();
           }
           readable.fromJson(this);
           if (isArray && peek() == JsonTokenType.END_ARRAY) {
              endArray();
           } else if (peek() == JsonTokenType.END_OBJECT) {
              endObject();
           }
           return object;
        } catch (ReflectionException e) {
           throw new IOException(e);
        }
     }
docs: Reads a class implementing readable
  
  @param <T>   the type parameter
  @param clazz the clazz
  @return the t
  @throws IOException the io exception