docs: public static Object previous(Enum self) {
          final Method[] methods = self.getClass().getMethods();
          for (Method method : methods) {
              if (method.getName().equals("previous") && method.getParameterTypes().length == 0) {
                  return InvokerHelper.invokeMethod(self, "previous", NO_ARGS);
              }
          }
          Object[] values = (Object[]) InvokerHelper.invokeStaticMethod(self.getClass(), "values", NO_ARGS);
          int index = Arrays.asList(values).indexOf(self);
          return values[index > 0 ? index - 1 : values.length - 1];
      }