@Override
      public T read(JsonReader in) throws IOException {
        T stub = defaultAdapter.read(in);
        if (stub == null) return null;

        for (Field field : ReflectionUtil.collectFields(type.getRawType())) {
          if (field.getAnnotation(Mandatory.class) != null) {
            try {
              field.setAccessible(true);
              if (field.get(stub) == null) {
                throw new JsonMandatoryException(String.format("Field '%s' is mandatory, but missing in response", field.getName()));
              }
            }
            catch (IllegalAccessException e) {
              throw new RuntimeException(e);
            }
          }
        }
        return stub;
      }
@Override
      public T read(JsonReader in)