docs: public final <K> Date parse(K value) {
  
          if (value == null) {
              return null;
          }
  
          try {
              if (value instanceof Date) {
                  Date date = (Date) value;
                  if (date.getTime() == Long.MAX_VALUE || date.getTime() == Long.MIN_VALUE) {
                      return date;
                  } else {
                      String string = formatter.get().format(date);
                      return formatter.get().parse(string);
                  }
              } else if (value instanceof UUID) {
                  long timestamp = UUIDGen.unixTimestamp((UUID) value);
                  Date date = new Date(timestamp);
                  return formatter.get().parse(formatter.get().format(date));
              } else if (Number.class.isAssignableFrom(value.getClass())) {
                  Long number = ((Number) value).longValue();
                  return formatter.get().parse(number.toString());
              } else {
                  return formatter.get().parse(value.toString());
              }
          } catch (Exception e) {
              throw new IndexException(e, "Error parsing {} with value '{}' using date pattern {}",
                                       value.getClass().getSimpleName(), value, pattern);
          }
      }