docs: static void addMonitorFields(
        List<Monitor<?>> monitors, String id, TagList tags, Object obj) {
      try {
        final SortedTagList.Builder builder = SortedTagList.builder();
        builder.withTag("class", className(obj.getClass()));
        if (tags != null) {
          builder.withTags(tags);
        }
        if (id != null) {
          builder.withTag("id", id);
        }
        final TagList classTags = builder.build();
  
        final Set<Field> fields = Reflection.getAllFields(obj.getClass());
        for (Field field : fields) {
          if (isMonitorType(field.getType())) {
            field.setAccessible(true);
            final Monitor<?> m = (Monitor<?>) field.get(obj);
            if (m == null) {
              throw new NullPointerException("field " + field.getName()
                  + " in class " + field.getDeclaringClass().getName()
                  + " is null, all monitor fields must be"
                  + " initialized before registering");
            }
            monitors.add(wrap(classTags, m));
          }
        }
      } catch (Exception e) {
        throw Throwables.propagate(e);
      }
    }