code: private <T> StringConverter<T> findAnnotatedConverter(final Class<T> cls) {
          Method toString = findToStringMethod(cls);  // checks superclasses
          if (toString == null) {
              return null;
          }
          MethodConstructorStringConverter<T> con = findFromStringConstructor(cls, toString);
          MethodsStringConverter<T> mth = findFromStringMethod(cls, toString, con == null);  // optionally checks superclasses
          if (con == null && mth == null) {
              throw new IllegalStateException("Class annotated with @ToString but not with @FromString: " + cls.getName());
          }
          if (con != null && mth != null) {
              throw new IllegalStateException("Both method and constructor are annotated with @FromString: " + cls.getName());
          }
          return (con != null ? con : mth);
      }
docs: Finds a converter searching annotated.
  
  @param <T>  the type of the converter
  @param cls  the class to find a method for, not null
  @return the converter, not null
  @throws RuntimeException if none found