docs: private static void autoUnmarshalEligible(HierarchicalStreamReader reader,
                                                Object o) {
          try {
              String nodeName = reader.getNodeName();
              Class c = o.getClass();
              Field f = null;
              try {
                  f = c.getDeclaredField(nodeName);
              } catch (NoSuchFieldException e) {
                  UNMARSHALL_ERROR_COUNTER.increment();
              }
              if (f == null) {
                  return;
              }
              Annotation annotation = f.getAnnotation(Auto.class);
              if (annotation == null) {
                  return;
              }
              f.setAccessible(true);
  
              String value = reader.getValue();
              Class returnClass = f.getType();
              if (value != null) {
                  if (!String.class.equals(returnClass)) {
  
                      Method method = returnClass.getDeclaredMethod("valueOf",
                              java.lang.String.class);
                      Object valueObject = method.invoke(returnClass, value);
                      f.set(o, valueObject);
                  } else {
                      f.set(o, value);
  
                  }
              }
          } catch (Throwable th) {
              logger.error("Error in unmarshalling the object:", th);
          }
      }