docs: static final TimeBasedRollStrategy findRollStrategy(
        final AppenderRollingProperties properties) {
      if (properties.getDatePattern() == null) {
        LogLog.error("null date pattern");
        return ROLL_ERROR;
      }
      // Strip out quoted sections so that we may safely scan the undecorated
      // pattern for characters that are meaningful to SimpleDateFormat.
      final LocalizedDateFormatPatternHelper localizedDateFormatPatternHelper = new LocalizedDateFormatPatternHelper(
          properties.getDatePatternLocale());
      final String undecoratedDatePattern = localizedDateFormatPatternHelper
          .excludeQuoted(properties.getDatePattern());
      if (ROLL_EACH_MINUTE.isRequiredStrategy(localizedDateFormatPatternHelper,
          undecoratedDatePattern)) {
        return ROLL_EACH_MINUTE;
      }
      if (ROLL_EACH_HOUR.isRequiredStrategy(localizedDateFormatPatternHelper,
          undecoratedDatePattern)) {
        return ROLL_EACH_HOUR;
      }
      if (ROLL_EACH_HALF_DAY.isRequiredStrategy(localizedDateFormatPatternHelper,
          undecoratedDatePattern)) {
        return ROLL_EACH_HALF_DAY;
      }
      if (ROLL_EACH_DAY.isRequiredStrategy(localizedDateFormatPatternHelper,
          undecoratedDatePattern)) {
        return ROLL_EACH_DAY;
      }
      if (ROLL_EACH_WEEK.isRequiredStrategy(localizedDateFormatPatternHelper,
          undecoratedDatePattern)) {
        return ROLL_EACH_WEEK;
      }
      if (ROLL_EACH_MONTH.isRequiredStrategy(localizedDateFormatPatternHelper,
          undecoratedDatePattern)) {
        return ROLL_EACH_MONTH;
      }
      return ROLL_ERROR;
    }