code: public CmsMessageContainer validateWithMessage() {
  
          if (m_parsingFailed) {
              return Messages.get().container(Messages.ERR_SERIALDATE_INVALID_VALUE_0);
          }
          if (!isStartSet()) {
              return Messages.get().container(Messages.ERR_SERIALDATE_START_MISSING_0);
          }
          if (!isEndValid()) {
              return Messages.get().container(Messages.ERR_SERIALDATE_END_BEFORE_START_0);
          }
          String key = validatePattern();
          if (null != key) {
              return Messages.get().container(key);
          }
          key = validateDuration();
          if (null != key) {
              return Messages.get().container(key);
          }
          if (hasTooManyEvents()) {
              return Messages.get().container(
                  Messages.ERR_SERIALDATE_TOO_MANY_EVENTS_1,
                  Integer.valueOf(CmsSerialDateUtil.getMaxEvents()));
          }
          return null;
      }
docs: Validates the wrapped value and returns a localized error message in case of invalid values.
  @return <code>null</code> if the value is valid, a suitable localized error message otherwise.