docs: @Trivial
      private static Type getType(Converter<?> converter) {
          Type type = null;
  
          Type[] itypes = converter.getClass().getGenericInterfaces();
          for (Type itype : itypes) {
              ParameterizedType ptype = (ParameterizedType) itype;
              if (ptype.getRawType() == Converter.class) {
                  Type[] atypes = ptype.getActualTypeArguments();
                  if (atypes.length == 1) {
                      type = atypes[0];
                      break;
                  } else {
                      throw new ConfigException(Tr.formatMessage(tc, "unable.to.determine.conversion.type.CWMCG0009E", converter.getClass().getName()));
                  }
              }
          }
          if (type == null) {
              throw new ConfigException(Tr.formatMessage(tc, "unable.to.determine.conversion.type.CWMCG0009E", converter.getClass().getName()));
          }
  
          return type;
      }