docs: public static List<FieldInfo> fetchFieldInfos(Class cls, boolean ignoreNoAnnotation) {
          // if set ProtobufClass annotation
          Annotation annotation = cls.getAnnotation(ProtobufClass.class);
  
          Annotation zipZap = cls.getAnnotation(EnableZigZap.class);
          boolean isZipZap = false;
          if (zipZap != null) {
              isZipZap = true;
          }
  
          boolean typeDefined = false;
          List<Field> fields = null;
          if (annotation == null) {
              fields = FieldUtils.findMatchedFields(cls, Protobuf.class);
              if (fields.isEmpty() && ignoreNoAnnotation) {
                  throw new IllegalArgumentException("Invalid class [" + cls.getName() + "] no field use annotation @"
                          + Protobuf.class.getName() + " at class " + cls.getName());
              }
          } else {
              typeDefined = true;
  
              fields = FieldUtils.findMatchedFields(cls, null);
          }
  
          List<FieldInfo> fieldInfos = ProtobufProxyUtils.processDefaultValue(fields, typeDefined, isZipZap);
          return fieldInfos;
      }